Для циклов в JavaScript - PullRequest
0 голосов
/ 08 июля 2010

Это мой код

function countdown(integer)
{
    for i = integer, 0, -1 do
    {
        document.write(i);
    }
}

То, что я пытаюсь сделать, это заставить цикл делать то, что я хочу, и то, что я хочу сделать, это ..

for i = integer, 0, -1 do
i = переменная токовой петли
integer = Запуск цикла с целым числом, вызываемым пользователем
0 = Окончание цикла
-1 = Приращение цикла *

Вышеуказанное решено, проблема теперь в том, что он показывает только «-> 1 <-». </p>

function countdown(integer)
{
    for( var i = integer; i > 0 ; i-- ) 
    {
        setTimeout(document.getElementById("cds").value="->"+i+"<-",1000);
    }
}

Ответы [ 6 ]

19 голосов
/ 08 июля 2010
for( var i = integer; i > 0 ; i-- ) 
{
    document.write(i);
}
3 голосов
/ 08 июля 2010

согласно вашему обновлению, я думаю, вам не нужен цикл for, вам нужно это,

демо

function countdown(integer) {
   var time = setInterval(function(){
        document.getElementById("cds").value="->"+(integer--)+"<-"
        if (integer == 0) clearInterval(time);
    },1000);
}​
2 голосов
/ 08 июля 2010
Цикл

A for выполняется сразу (без ожидания срабатывания setTimeout), и, следовательно, ваш код установит integer количество таймеров одновременно (с интервалом в микросекунды) и только последний один (где я 1), будет виден пользователю. Вы должны сделать это как:

var counter = integer;
setTimeout("update();", 1000);
function update()
{
    document.getElementById("cds").value= "->" + counter + "<-";
    if(--counter == 0)
        return;
    setTimeout("update();", 1000);
}
1 голос
/ 08 июля 2010

Быстрее (я это проверил) и легче читать ...

var i = 100;
while(i--) {
   document.write(i);
}
0 голосов
/ 08 июля 2010

Полагаю, вы хотите показать обратный отсчет числа в указанном поле ввода. Позвольте мне дать ему шанс.

<html>
  <head>
    <script type="text/javascript">
    function countdown(count) {
      document.getElementById("cds").value = count;
      if (count > 0) {
        setTimeout("countdown(" + (count - 1) + ")", 1000);
      }
    }
    </script>
  </head>
  <body onload="countdown(10)">
    <input type="text" id="cds" value="0" />
  </body>
</html>

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

0 голосов
/ 08 июля 2010

Вы можете использовать приведенный ниже скрипт.

for( var i = integer; i > 0 ; i-- ) 
{
    document.write(i);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...