2012-10-25 58 views
2

我正在用django開發一個應用程序。我試圖通過您的網絡攝像頭實現一個分數計數器,取決於有多少人正在觀看您。Django中的Javascript函數

我實現了一個函數來獲取正在觀看你的人數。現在我希望有一個計數來計算用戶的現有分數,併爲每個正在觀看的人每分鐘添加一分。

這裏是得到觀衆人數的函數:

var url = window.location.pathname.split('/'); 
    var id = url[3]; 

setInterval(function() { 
    $.ajax({ 
     type: "GET", 
     url: "http://myxml", 
     success: parseXml 
    }); 
}, 2000); 

function parseXml(xml){ 
    $(xml).find("user").each(function() { 

      if($(this).attr("id") === id) { 
       $(".Score").html($(this).attr("count")) 
      } 
     }); 
} 

它完美。

現在,這裏是我嘗試實施,以獲得現有的成績,並添加點功能:

setInterval(function UserScore(){ 
     var self = $(this), 
     score=self.attr('existing-score'), 
     $(".PlayerScore").html($(this).attr("Score"+"existing-score")) 
    }, 60000); 

,並使其在html:

<div class="PlayerScore" existing-score="{{ dub.user.userprofile.score }}"></div> 

此功能沒有按」工作。沒有出現。

我在Django和Javascript中都很新,所以我猜這個函數肯定有很多錯誤。所以任何幫助將是非常受歡迎的。謝謝。

+0

你錯在';'和','。在UserScore()函數中,你已經把','放在需要'''的行的末尾。另外,嘗試使用Javascript調試器(如Chrome開發人員工具或Firebug),您將知道代碼失敗的位置。 – pistache

回答

0

試試這個:

setInterval(function(){ 
    var score = $(".PlayerScore").attr('existing-score'); 
    var watchers = $(".Score").attr("count"); 
    $(".PlayerScore").html($(this).attr(score+watchers)) 
}, 60000); 

這裏有一些變化。

  • 用戶var關鍵字用於保持您的變量聲明局部於當前範圍。否則,你聲明瞭全局變量,並且你最終會重寫其他一些具有相同名字的變量。很難調試。
  • 有沒有必要命名功能UserScore,只是使其匿名。
  • 獲取現有的score作爲值,並獲取watchers的值作爲值。
  • 將新的PlayerScore設置爲這些值的組合。 PlayerScore是一類,我不知道這是否是故意的,但它更有意義,如果它是id
+0

謝謝你的回答。我試圖應用您的解決方案,但它看起來沒有工作。關於PlayerScore,這不是故意的,它不符合我的任何課程。可能是問題來自那個? – JojoL