2011-10-11 84 views
2

我有這段代碼從數據庫中獲取一些運動統計信息,並更新它們 - 我試圖在檢測到更改時發出警報(#scorealert div)。如果只有一個分數發生了變化,這可以正常工作。當有多個更改時,它顯示錯誤的名稱 - 它會一直顯示最後一個值,而不會更改名稱。Javascript計時/循環問題?

仍然是初學者與JavaScript/ajax和學習..請溫柔。

謝謝!

function getscores() { 

    $.post("/get_live_scores.php", {e: <?=$entryid;?>}, function(celldata) { 

    data = jQuery.parseJSON(celldata); 
    $.each(data, function(i,item) { 
     var pname = data[i].pname; 
     var cell = data[i].key; 
     var save_val = data[i].save_val; 
     var wins = data[i].wins; 
     var shutouts = data[i].shutouts; 
     var goals = data[i].goals; 
     var assists = data[i].assists; 
     var ht = data[i].ht; 
     var gwg = data[i].gwg; 

     if ($('td#'+cell+'_goals').text() < goals) { 
      $('div#scorealert').html('Goal by '+data[i].pname); 
      $('div#scorealert').animate({left: '0px'}); 
      $('div#scorealert').delay(4000).animate({left: '-300px'}); 
     } 
     updatecell(pname, cell, save_val, wins, shutouts, goals, assists, ht, gwg); 


    }); 

    updatetotal(); 
    }); 
}  
+0

您可能希望'var data ='(注意'var')將其保留在全局名稱空間之外。 –

+0

也許檢查結果是否按照正確的順序進行?我看不出有什麼不對的地方跳出來...... – nickf

+0

另外,'pname'是唯一不*更新的字段? –

回答

0

請檢查e: <?=$entryid;?>

它是從PHP產生的?如果是這樣,在php生成它並將其發送到瀏覽器後它不會改變。所以你的JavaScript總是會得到相同的值,並總是發佈相同的數據。

+0

頂部有一些標題數據來處理這個問題: ' <? 標題(「content-type:application/x-javascript」); $ entryid = intval($ _ GET ['entryid']); ' etc ... –

+0

你是否有很多div classale scorealert?如何確保每個scorealert,只有該div被更新。它多次更新,所以你只能得到最後一個「目標」?請使用firebug追蹤它... – Tommy

+0

請檢查循環中「var pname」是否發生更改,如果更改,問題是$('div#scorealert')。html('Goal by'+ data [i]。 pname);你只是不斷更新它在循環中... – Tommy

1

我說實話;我看不出爲什麼它只顯示第一個。據我所知,它應該顯示最後一個。原因是:在每個循環中,您都在div上調用.html(),這將用新內容替換該提醒div的內容。除非.delay()函數也中斷了這個時間呢?

我會用.append()或另一個非破壞性的DOM添加函數將目標得分者(etc)添加到div中,然後在循環完成後調用動畫(全部包含所有得分者)。

[編輯評論作者討論的結果:]

由於.append()他們都添加到同一div(這是沒有預期的效果),順便讓他們在不同的警報容器是根據需要動態創建這些容器。

+0

如果這樣做,它應該顯示列表中的最後一個,而不是第一個,儘管OP可能是錯誤的。 –

+0

對不起,你是對的。它實際上是顯示最後的值兩次。我已更新了我的初始帖子。 :( 我的目的是讓這個盒子實際上滑入/滑出每一個新的分數警報,而不是一次顯示它們。 –

+0

.append方法的工作原理和獲取專有名稱,儘管我更喜歡如果有人知道我的代碼出了什麼問題,我原本打算這麼做,那很好。 現在,我得到了.append,這是好吧,謝謝! –