2011-09-16 6 views
2

나는 그들이 뉴스 시세를 원하는 웹 사이트를 가지고 있습니다. 현재 배열을 채우고 있으며, 매 x 초마다 뉴스 기사가 변경되기를 원합니다.자바 스크립트에서 배열을 통해 반복하려면 setInterval?

function startNews(stories) { 

} 

난 당신이 setInterval를 사용할 수 있다는 것을 알고 있지만, 새로운 기능을 통해 이동하는 당신은 그것을 그렇게되면 화재 동일한 기능의 특정 자바 스크립트를 지정할 수 없습니다.

제안 사항을 말씀해주십시오.

감사합니다.

답변

11

setInterval()을 사용하거나 setTimeout()을 반복하여 사용해야합니다. 그것은 당신이 미래에 언젠가 자바 스크립트에서 뭔가를하는 방법입니다.

이러한 타이머 기능으로 수행 할 수있는 작업에는 제한이 없습니다. 정확히 당신이 그럴 수 없다고 생각하는 것은 당신이 그들을 피하려고 노력하는 것입니까?

var newsArray = []; // your code puts strings into this array 
var curNewsIndex = -1; 

var intervalID = setInterval(function() { 
    ++curNewsIndex; 
    if (curNewsIndex >= newsArray.length) { 
     curNewsIndex = 0; 
    } 
    setTickerNews(newsArray[curNewsIndex]); // set new news item into the ticker 
}, 5000); 

또는이 같이 할 수있다 :

var newsArray = []; // your code puts strings into this array 
var curNewsIndex = -1; 

function advanceNewsItem() { 
    ++curNewsIndex; 
    if (curNewsIndex >= newsArray.length) { 
     curNewsIndex = 0; 
    } 
    setTickerNews(newsArray[curNewsIndex]); // set new news item into the ticker 
} 

var intervalID = setInterval(advanceNewsItem, 5000); 
+0

x ('setInterval ("x", 1000);')에 if 문이있어서 방화 광에서 오류가 발생했습니다. – iosfreak

+0

@ phpnerd211 : 당신은 틀렸다고합니다. 따옴표를 버리십시오. – alex

+0

'setInterval()'은 자바 스크립트 함수 또는 문자열을 첫 번째 인수로 사용합니다. 함수 이름이거나 익명의 함수 선언 일 수 있습니다. 또한 문자열로 코드화 할 수도 있지만 최선의 방법은 아닙니다. 위의 예제에서 인라인 익명 함수를 사용하여 내 대답을 추가 한 것을보십시오. – jfriend00

5

당신이해야 가능한 사용의 setTimeout

는 여기에 의사 코드의 예입니다. 함수가 간격보다 실행하는 데 시간이 오래 걸리면 일정한 100 % cpu 사용 상황을 실행할 수 있습니다.

이 코드를보십시오 : http://jsfiddle.net/wdARC/

var stories = ['Story1','Story2','Story3'], 
    i = -1; 
(function f(){ 
    i = (i + 1) % stories.length; 
    document.write(stories[ i ] + '<br/>'); 
    setTimeout(f, 5000); 
})(); 

이 기능을 document.write를 교체합니다.

+0

setInterval 대신 setTimeout을 사용해야하는 이유는 무엇입니까? – Gisheri

관련 문제