2013-03-25 73 views
0

我有一個簡單的html表單。 (一個輸入(文本)和一個提交按鈕)。當我輸入任何單詞並按提交按鈕時,會顯示最近的10條推文。推文列表必須每15秒刷新一次。我使用javascript和json成功訪問了twitters數據庫(只有公共tweets)。但刷新部分不能正常工作。
這裏是我的javascript代碼:setInterval和json

function f() 
{ 
    var words = document.getElementsByTagName("input"); 
    words = words[0].value; 

    json(words); 
    setInterval(function(){ 
     json(words); 
    }, 15000); 
} 

function json(words) 
{ 
    $.getJSON("http://search.twitter.com/search.json?q="+words+"&rpp=10&callback=?", function(data){ 
     var results = data.results; 
     var tweet ='<div>'; 

     for(i=0; i<results.length; i++){ 
      var nickname = results[i].from_user; 
      var text = results[i].text; 

       tweet+='<b><p>'+nickname+'</p></b><br/>'; 
       tweet+='<p>'+text+'</p>'; 
     } 
     tweet +='</div>'; 

     $('#tweets').html(tweet); 
    }); 
} 

當我按下提交按鈕,F功能被觸發,它調用JSON功能。我的問題是:例如,當我鍵入「chelsea」並按下提交按鈕時,項目將顯示結果並每15秒刷新一次。然後,如果我輸入「曼徹斯特」並按提交按鈕,項目必須顯示僅關於「曼徹斯特」的結果。但它顯示了關於「manchester」和「chelsea」的結果。它擁有舊的價值。我怎樣才能避免它們,什麼是錯的?

回答

1

您需要清除以前的setInterval

你可以做這樣的事情:

var intv; 
    function f() 
    { 
     clearInterval(intv); 
     var words = document.getElementsByTagName("input"); 
     words = words[0].value; 

     json(words); 
     intv= setInterval(function(){ 
      json(words); 
     }, 15000); 
    } 
+0

謝謝你,它的工作。但我在json函數中定義了結果變量,並且必須根據我的代碼在每次調用中刷新結果變量。它如何保持舊的價值? – otp 2013-03-25 20:07:24

+0

你還會得到舊值嗎?我認爲它發生因爲你沒有清除前面的區間 – 2013-03-25 20:13:00

+0

我添加了「clearInterval(intv)」語句,它運行良好。我問我以前的代碼。 「結果」變量如何保持舊值?它必須刷新您的舊代碼中的每個調用 – otp 2013-03-25 20:22:00