2008-11-01 2 views
0

Следующий javascript должен установить интервал, чтобы новый элемент из списка объектов json был добавлен в верхнюю часть списка медленно, но вместо этого все они добавляются одновременно.Как настроить временной интервал в javascript?

<script type="text/javascript"> 
    var json; 
    var count = 0; 
    $(document).ready(function() { 
     $.ajax({ 
      type: "POST", 
      url: "/Home/PublicTimeLine", 
      data: "{}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function(msg) { 
       json = eval(msg); 
       createRow(); 
      } 

     }); 
    }); 

    function createRow() { 
     if (count < json.length) { 
      var data = json[count]; 
      var row = document.createElement("div"); 
      $(row).hide(); 
      row.appendChild(document.createTextNode(data.text)); 
      $(document).find("#results").prepend(row); 
      $(row).fadeIn("slow"); 
      count++; 
      setTimeout(createRow(), 3000); 
     } 
    } 
</script> 

<div id="results"> 
</div> 

ответ

2

Если бы я был вами, я бы занялся этим несколько иначе. Почему бы не добавить все данные на свою страницу, а просто спрятать их и показать, когда захотите. Таким образом, вам не нужно беспокоиться о закрытии и много чего.

var intervalId; 
$.ajax({ 
    type: "POST", 
    url: "/Home/PublicTimeLine", 
    dataType : "json", 
    success : function (msg) { 
     var json = eval(msg); // is this even needed? 
     $.each(json, function(ind, data) { 
      $("<div></div>")  // use jQuery to create the div 
       .hide() 
       .text(data)  // you can use jQuery to add contents too. (use .html() if you need HTML) 
       .prependTo('#results') 
      ; 
     }); 
     intervalId = setInterval(showRow, 3000); 
    } 
}); 
function showRow() { 
    var $myDiv = $('#results div:hidden:last'); 
    if ($myDiv.length) { 
     $myDiv.show('slow'); 
    } else { 
     clearInterval(intervalId); // none more to show, stop checking 
    } 
} 
Смежные вопросы