0
var flag = true;
function changeColor (element) {
if(flag==true){
document.getElementById(NAME+element).style.background="red";
flag=false;
}
else if (flag==false){
document.getElementById(NAME+element).style.background="white";
flag = true;
}
}
var temp;
for(var i=0;i<elements_array.length;i++)
{
alert("VAL="+elements_array[i]);
temp = elements_array[i];
setInterval(function() { changeColor(temp); } ,300);
}
위의 코드는 마지막 값에만 적용됩니다. 정수 배열 (elements_array)에서 얻을 수있는 특정 셀의 색을 변경하려고합니다.for 루프에서 매개 변수를 전달하는 SetInterval
경고에서 배열 값이 올바르게 표시됩니다 (예 : 2,5,8). 그러나 단지 8 번째 (마지막) 색이 변하고 있습니다.
그러나 하드 코딩하면 다음과 같은 값으로 모든 셀이 색이 바뀝니다.
setInterval(function() { changeColor(2); } ,300);
setInterval(function() { changeColor(5); } ,300);
setInterval(function() { changeColor(8); } ,300);
루프가 작동하지 않는 이유에 대한 아이디어가 있으십니까? 감사합니다.
감사합니다. 그것은 콜백 함수와 함께 작동합니다. – m4n07
Internet Explorer에서는 작동하지만 크롬에서는 작동하지 않습니다. Chrome에서는 색상을 한 번 변경하기 시작하고 중지됩니다. 어떤 제안? – m4n07
@ m4n07 이것이 바람직한 동작이지만이 [jsfiddle] (http://jsfiddle.net/kuguZ/)의 코드가 내 크롬 (19)에서 잘 작동하는지 모르겠습니다. 문제는 전역'flag' 변수 일 수 있습니다. 아마도 요소 당 하나의 '플래그'가 있어야합니다. – Sirko