2016-09-20 5 views
0

私は3秒ごとにJSONファイルから新しいデータを更新してチェックするリスティングシステムを作っています。また、fadeIn()とfadeOut()を追加していますが、fadeIn()とfadeOut()がループして(setInterval(list、3000);)毎に が実行されています。 データがすでに追加されたら、私はそれを実行したい。私の悪い英語のために申し訳ありません。fadein()とfadeout()をループとsetIntervalで一度だけ実行するには?

注:IT KEEPS ON BLINKING。 3秒

list(); 
setInterval(list, 3000); 

function list() { 
    $.getJSON('list.php',function(response){ 
     var timeout = 400; 
     $("#list").fadeOut(timeout); 
     $('#list').fadeIn(timeout); 
     $('#list').empty(); 

     for(var i = 0; i < response.list_count; i++){ 
      var newElement = document.createElement('div'); 
      newElement.innerHTML = response.list[i].firstname; 
      document.getElementById("list").appendChild(newElement); 
     } 
     document.getElementById("list_count").innerHTML = "" + response.list_count; + ""; 
    }); 
}; 

答えて

1

で変数を追加してみてください、あなたの要素が示されている場合(要素が既に示されたされている場合だけでチェッカーのために)真割り当てる

var displayed = false; 

list(); 
setInterval(list, 3000); 

function list() { 
    $.getJSON('list.php',function(response){ 
     var timeout = 400; 
     if (displayed == false) { 
      $("#list").fadeOut(timeout); 
      $('#list').fadeIn(timeout); 
      displayed = true; 
     } 
     $('#list').empty(); 

     for(var i = 0; i < response.list_count; i++){ 
      var newElement = document.createElement('div'); 
      newElement.innerHTML = response.list[i].firstname; 
      document.getElementById("list").appendChild(newElement); 
     } 
     document.getElementById("list_count").innerHTML = "" + response.list_count; + ""; 
    }); 
}; 
関連する問題