2015-06-05 82 views
-1

當我打電話給我的功能時,它會啓動一個時間間隔來刷新聊天屏幕。但是,當我選擇一個不同的用戶(不同的參數)時,前面的間隔繼續,並且我不確定如何在新間隔開始時停止前一個間隔。我已經嘗試從函數外部調用clearInterval(),但我認爲我的語法必須是錯誤的,因爲它將間隔顯示爲未定義。如何在新的時間間隔開始時停止功能上的時間間隔

這是我的代碼。

function selectrecipient(x,y){ 
    clearInterval(refint); 
    var refint = setInterval(function(){ 
    $.ajax({ 
     type: "POST", 
     url: '../includes/chat/msgs.php', 
     data: ({ chosenuser : x }), 
     success: function(data){ 
     document.getElementById('messagehistory').innerHTML = data; 
     } 
    }); 

    document.getElementById("recipientid").value = ""+x+""; 
    }, 1000); 
} 
+0

如果你的意思是'selectrecipient'被多次調用,那麼'refint'的範圍是錯誤的。將變量聲明移到函數之外。 – Bergi

回答

0

你需要在外部範圍的其他變量的值聲明變量refint將在每次調用該方法復位。在你的情況,因爲你已經宣佈它在每次調用selectrecipient一個局部變量的新變量將被用來當clearInterval它的值將undefined

var refint; 

function selectrecipient(x, y) { 
    clearInterval(refint); 
    refint = setInterval(function() { 
     $.ajax({ 
      type: "POST", 
      url: '../includes/chat/msgs.php', 
      data: ({ 
       chosenuser: x 
      }), 
      success: function (data) { 
       document.getElementById('messagehistory').innerHTML = data; 
      } 
     }); 

     document.getElementById("recipientid").value = "" + x + ""; 
    }, 1000); 
} 
+0

其實這個工作真的很好。謝謝!我還必須在函數內重寫之前刪除var聲明。一旦我做到了,問題就解決了。 – user3607800