2012-02-18 4 views
2

jQuery를 사용하여 웹 페이지에 임의의 인용문을 표시하려고했습니다. 그러나 while(true) { } 접근 방식은 내 문제를 해결하지 못했지만 약간 검색했을 때 권장하지 않습니다.15 초마다 JavaScript 코드 실행

일부 문자열이 포함 된 JavaScript 배열이 있습니다.

var quotes = new Array(); 
quotes[0] = "string 1"; 
quotes[1] = "string 2"; 
quotes[2] = "string 3"; 
quotes[3] = "string 4"; 

이 코드

잘 작동 :

$(function() { 
    var random_quote = quotes[Math.floor(Math.random() * quotes.length)]; 
    var $rand = $('div#randomQuote'); 
    $rand.append(random_quote); 
    $rand.hide(); 
    $rand.fadeIn("500"); 
}); 

을하지만, 내가 견적을 갱신이 15 초마다 실행하는 데 노력하고있어.

내가 말했듯이, 나는 진정한 루프와 수면 기능을 시도했지만 작동하지 않았다.

어떻게하면됩니까?

답변

7

new Array() 생성자를 사용하여 사용이 setInterval

setInterval(yourFunction, timeInMilliseconds); 

function randomQuote() { 
    var random_quote = quotes[Math.floor(Math.random() * quotes.length)]; 
    var $rand = $('div#randomQuote'); 
    $rand.append(random_quote); 
    $rand.hide(); 
    $rand.fadeIn("500"); 
} 

$(function() { 
    setInterval(randomQuote, 15000); 
}); 
1
var quotes = ["string 1", "string 2", "string 3", "string 4"]; 

$(function() { 

    function doQuote() { 
     var random_quote = quotes[Math.floor(Math.random() * quotes.length)]; 
     var $rand = $('div#randomQuote'); 
     $rand.append(random_quote); 
     $rand.hide(); 
     $rand.fadeIn("500"); 
    } 

    setInterval(function() { doQuote() }, 150000); 
}); 

나쁜 연습과 배열 리터럴 정의 간주하는 것은 바람직한 방법이다.

+0

익명 함수를'setInterval'의 인자로 사용하는 이유는 무엇입니까? – Quentin

+0

모범 사례이기 때문에. setInterval은 eval()처럼 작동하기 때문에 문자열 대신 함수를 사용하는 것이 좋습니다. JavaScript를 좋은 부분으로 읽으십시오;) – danwellman

+1

다시 말씀 드리겠습니다 : 기존 함수를 직접 전달하는 대신 인수없이 기존 함수를 호출하는 새로운 기능을 만드는 이유는 무엇입니까? – Quentin

관련 문제