2015-05-26 57 views
-1

我這裏有一個的jsfiddle - http://jsfiddle.net/5z2vu47a/JavaScript計數器只能一次

這是一個簡單的計時器,應該改變的是取自文字和陣列

定時器只能使用一次。

爲什麼計時器不能繼續工作。

var name_arr = ['learn', 'product', 'buying', 'selling', 'marketing', 'managing', ]; 
var counter = 0; 

function names(){ 
    alert(counter); 
    $('.text p').text(name_arr[counter]); 
    counter++; 
    alert(counter); 
} 

setTimeout(names, 1000); 
+1

使用'setInterval' http://www.w3schools.com/jsref/met_win_setinterval.asp – Pete

+1

使用的setInterval,而不是setTimeout的 –

+0

_ 「爲什麼定時器不繼續合工作。」 _爲什麼要呢? – j08691

回答

2

您需要使用setInterval

setInterval(names, 1000); 

names功能,還檢查計數器的值不應超過name_arr.length

function names(){ 
    alert(counter); 
    $('.text p').text(name_arr[counter]); 
    if(counter<(name_arr.length-1)) 
    counter++; 
    else 
    counter=0; 
    alert(counter); 
} 
+0

「...不應超過name_arr.length「 - 很好的結果 – NemoStein

0

您使用setTimeout,它等待1秒鐘,然後做你的函數。

你想setInterval

1

setTimeout只運行一次,在指定延遲之後。
如MDN指出WindowTimers.setTimeout()

,調用一個函數或執行指定的延遲後的代碼片段。

setInterval以間隔運行,間隔指定的延遲。 如MDN指出WindowTimers.setInterval()

,調用一個函數或反覆執行一個代碼段,其中每個調用該函數之間的固定的時間延遲。返回一個intervalID。

因此,setInterval將永遠運行,除非你打破它與clearInterval

function doStuff() { 
    // Doing ome nice and fancy stuff here... 
} 

var interval = setInterval(doStuff, 1000); 

// this will stop the interval loop 
clearInterval(interval);