2013-08-24 2 views
-1

На моем веб-сайте у меня есть индикатор прогресса, и когда я нажимаю кнопку , загрузите кнопку, стартует панель выполнения. Кстати, я хочу, чтобы он прогрессировал немного медленно, поэтому я подумал, что могу использовать setTimeout();.Javascript setTimeout(); для ProgressBar не работает

http://jsfiddle.net/pHxSy/9/

Если вы посмотрите на эту jsfiddle, при нажатии Скачать кнопку ничего случается. Я тестировал его на firefox, и консоль сообщает мне ReferenceError: startTime is not defined.

Как я могу это исправить?

+0

Не просто ссылайтесь на скрипку, поместите здесь соответствующий код. –

ответ

3

у вас есть некоторые ошибки s в скрипке вы делили

  1. onclick="startTime(i);" должен быть onclick="startTime(0)"

  2. линии

    document.getElementById("movingbar").style.width = i + "%"; 
    

должен быть

document.getElementById("prog").style.width = i + "%"; 

как вы ДИВО имя prog вместо movingbar

working fiddle

1

установить ваш onclick="startTime(i);" в onclick="startTime(0);"

<input value="Download" type="button" onclick="startTime(0);"> 

Вот JSBin

0

установленное значение в функции Парм

<input value="Download" type="button" onclick="startTime(0);"> 

JSFIDDLE

0

Вы находитесь на правильном пути, только несколько исправлений необходимо:

  • onclick="startTime(i);" должен быть onclick="startTime(0);"
  • .getElementById("movingbar") должен быть .getElementById("prog")
  • setTimeout('startTime('+i+')',50); должны быть setTimeout(function(){ startTime(i); }, 50);.

Последний пункт, как правило, является лучшей практикой. Вы не хотите запускать eval в Javascript (посмотрите here).

Рабочие js скрипки here.

Наконец, если вы хотите, чтобы сделать его прогресс медленнее, как вы дойдете до конца, вы могли бы использовать простой трюк:

setTimeout(function(){ startTime(i); }, 50 + i); 
0

вы можете найти работающий скрипку http://jsfiddle.net/BWamw/

или просто вставить этот код нет необходимости передавать аргументы при вызове STARTTIME()

var progress = 0; 
var interval; 
function startTime() { 
    interval = window.setInterval(function() { 
     document.getElementById("prog").style.width = progress + "%"; 
     progress++; 
     if (progress >= 100) { 
      interval =window.clearInterval(interval) 
     } 
    }, 100) 
} 

вы должны лучше вы setInterval его будет выполнять заданную функцию в некоторый промежуток времени. этим вы можете избежать рекурсии

также прост в использовании.

Смежные вопросы