2015-05-26 6 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

_ "Почему таймер не contiue работать." _ Почему это? – 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()

Вызывает функцию или выполняет фрагмент кода повторно, с фиксированной задержкой по времени между каждым вызовом этой функции. Возвращает интервалID.

Таким образом, setInterval будет работать вечно, если вы не сломаете его с помощью clearInterval.

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

var interval = setInterval(doStuff, 1000); 

// this will stop the interval loop 
clearInterval(interval); 
Смежные вопросы