세 가지 요소가 있습니다. 모두 흰색이거나 전혀 색상이 적용되지 않습니다. 어떤 요소가 클릭/선택되면 빨간색으로 바뀌고, 두 요소가 클릭/선택되면 빨간색으로 나타납니다. & 녹색입니다. 세 요소가 모두 클릭/선택된 경우 빨강, 녹색, 파랑입니다. 이제 어떤 요소가 두 번 클릭되면 다시 흰색으로 바뀌지 만, 여전히 논문의 규칙을 따라야합니다.자바 스크립트는 조건부로 색상을 변경합니다
한 요소 도움으로
파란색, 빨간색 = 빨간색
2 요소 = 녹색
3 요소 = 녹색, 빨간색, 지금까지이 코드를 내놓았다했지만 필요한 조건에 따라 이벤트를 반응시키는 방법을 알아낼 수 없습니다. 예를 들어 세 버튼을 모두 클릭하고 녹색을 클릭하여 제거하면 파란색이 녹색이어야합니다. jsFiddle with classes example
CSS
.container {
background-color: #ffffff;
border: 1px solid blue;
border-radius: 10px;
width: 100px;
height: 50px;
}
.red { background-color: #ff0000; }
.green { background-color: #00ff00; }
.blue { background-color: #0000ff; }
요소
<div class='container' id='1' style='margin: 150px 0 0 75px; float: left;'></div>
<div class='container' id='2' style='margin: 150px 0 0 175px; float: left;'></div>
<div class='container' id='3' style='margin: 150px 0 0 220px; float: left;'></div>
자바 스크립트
window.onload=function() {
// set color classes into an array
var classes = ["red", "green", "blue"];
var nextClass = 0;
var element = document.querySelectorAll(".container");
// loop through container class elements one at a time onclick run changeClass
for (var i = 0; i < element.length; i++)
{
element[i].addEventListener("click", changeClass);
}
function changeClass (eventListener)
{
var element = eventListener.currentTarget;
var currentClass = hasClass(element, classes);
if (currentClass)
{
element.classList.remove(currentClass)
}
else
{
element.classList.add(classes[nextClass]);
nextClass = (nextClass + 1) % classes.length;
}
}//end function
function hasClass(element, classes)
{
// loop through classes array
for (var i = 0; i < classes.length; i++)
{
// onclick if all classes applied return currentClass
if (element.classList.contains(classes[i]))
{
return classes[i];
}
}
}// end function
}//end onload
필요한 조건에 따라 이러한 클래스를로드하는 방법이 있나요?
element.style.backgroundColor
을 사용하여 색상을 인라인으로로드 할 수 있지만 여전히 도움이되지 않습니다. 마지막으로 나에게 도움이 된 사람은 매우 재능이 있었고 나는 같은 도움이되기를 바라고 있습니다.) ... 지금까지 많이 배웠지 만 여전히 붙어 있었지만 가까스로 옳았습니다. 여기
window.onload=function() {
var classes = ["red", "green", "blue"];
var nextClass = 0;
var element = document.querySelectorAll(".container");
for (var i = 0; i < element.length; i++)
{
element[i].addEventListener("click", changeClass);
}
function changeClass (eventListener)
{
var elementG = document.querySelector('.green');
var elementB = document.querySelector('.blue');
var elementR = document.querySelector('.red');
var element = eventListener.currentTarget;
var currentClass = hasClass(element, classes);
var red = removeRed(element, classes);
var green = removeGreen(element, classes);
if (currentClass)
{
element.classList.remove(currentClass)
nextClass--;
if (nextClass < 0)
{
nextClass += classes.length;
}
}
else
{
element.classList.add(classes[nextClass]);
nextClass = (nextClass + 1) % classes.length;
}
if (red && elementB != null)
{
elementB.classList.add('red');
elementB.classList.remove('blue');
}
else if (red && elementB == null && elementG != null)
{
elementG.classList.add('red');
elementG.classList.remove('green')
}
if (green && elementB != null)
{
elementB.classList.add('green');
elementB.classList.remove('blue');
}
}//end function
function hasClass(element, classes)
{
// loop through classes array
for (var i = 0; i < classes.length; i++)
{
// if all three classes
if (element.classList.contains(classes[i]))
{
return classes[i];
}
}
}// end function
function removeRed(element, classes)
{
if (element.classList.contains(classes[0]))
{
return classes[0];
}
}// end function
function removeGreen(element, classes)
{
if (element.classList.contains(classes[1]))
{
return classes[1]
}
}
}//end onload
jquery를 배우는 것이 좋습니다. http://www.codeschool.com/courses/try-jquery – kilkadg
jQuery를 사용하는 방법을 알고 있습니다. JavaScript로만 수행해야합니다. 예, jQuery를 사용할 수 있다면 훨씬 쉽습니다. – handmdmr