2012-07-29 2 views
1

회전하는 배너 (배열을 통해 호출)를 실행하려고합니다. 간격을 설정했지만 이미지가 10 초 (10000) 후에 만 ​​표시되고 회전이 시작됩니다. 나는 배열의 복잡 HTML을 제거하지만, 여기의 나머지는 다음과 같습니다setInterval 지연

var current = 0; 

var banners = new Array(); 
banners[0]=; 
banners[1]=; 
banners[2]=; 
banners[3]=; 

var myTimeout = setInterval("rotater()",10000); 

function rotater() { 
    document.getElementById("placeholderlayer").innerHTML=banners[current]; 
    if(current==banners.length-1){ 
     current = 1; 
    }else{ 
     current += 1; 
    } 
} 

window.onload = rotater(); 
+0

당신이 요구하는 구체적인 문제가 아니라 주목할 가치가있는 개선 사항. 'setInterval'에는 다음과 같은 문자열이 아닌 직접 함수 참조가 전달되어야합니다 : var'myTimeout = setInterval (rotater, 10000);' – jfriend00

답변

3
window.onload = rotater; 

이 올바른 구문입니다. 함수를 호출하고 싶지는 않습니다. 그러나, 방탄 솔루션이 오히려입니다 :

onload = function() { 
    rotater(); 
    window.myTimeout = setInterval(rotater, 10000); // Never pass a string to `setInterval`. 
}; 

ProTip ™ : new Array()을 사용하여 문자 배열을 사용하지 마십시오. 예를 들어, 이것은 :

var arr = ['Hello', 'world!']; 
+0

굉장하고, 수정되고, 편집되었습니다! 고맙습니다. :) –

1

그냥 코멘트 :

대신 :

if(current==banners.length-1) { 
    current = 1; 

} else { 
    current += 1; 
} 

당신이 할 수 있습니다

var arr = new Array(); 
arr[0] = 'Hello'; 
arr[1] = 'world!'; 

는 다음과 같이 작성해야

current = ++current % banners.length;