Javascript для проблем цикла - PullRequest
       0

Javascript для проблем цикла

1 голос
/ 30 августа 2011

Итак, у меня есть следующий код, который я в основном просто строка JSON, я использую eval для преобразования в объект.Теперь этот объект имеет массив элементов, который отображается на экране с помощью цикла for:

function DisplayListing(str)
{
    var obj = eval("(" + str + ")");
    var div = document.getElementById('Response');
    for(i=0; i<obj.files.length; i++)
    {
        div.innerHTML += '<span id="listing' + i + '" class="displayNone"><img src="' + obj.files[i].icon + '"/>' + obj.files[i].name + '</span><br />';   
    }   
}

Это работает просто отлично.Однако я хочу подождать установленный интервал времени, прежде чем он перейдет к следующему элементу.Я хочу, чтобы он в основном вызывал функцию с тайм-аутом, поэтому каждый элемент исчезает на экране индивидуально.Все попытки до сих пор приводят к тому, что последний элемент выполняет функцию.Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

3 голосов
/ 30 августа 2011

http://jsfiddle.net/SfKNc/

var obj = {files: [1, 2, 3]}; // sample object - use JSON.parse by the way
var div = document.getElementById('Response');
for(var i=0; i<obj.files.length; i++) { // use var!
    setTimeout((function(i) {
        return function() { // i changes, so create a new function in which i does not change
            div.innerHTML += 
                '<span id="listing' + i + 
                '" class="displayNone">' + i + 
                '</span><br />';
        };
    })(i), i * 1000); // set timeout to 1000 ms for first item, 2000 for second etc.
}   
0 голосов
/ 30 августа 2011

вы вручную создали функцию сна, как показано ниже:

function sleep(milliseconds) {
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++) {
    if ((new Date().getTime() - start) > milliseconds){
      break;
    }
  }
}

или создаете пустую функцию и используете для нее setTimeout

  function sleep()
    {
    setTimeout(Func1, 3000);
    }

    Func1(){}

http://www.phpied.com/sleep-in-javascript/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...