2

私はdjangoでアプリを開発しています。あなたのウェブカメラを通してあなたを見ている人の数に基づいて、スコア カウンターを実装しようとしています。

ライブであなたを見ている人の数を取得する機能を実装しました。ここで、ユーザーの既存のスコアを取得し、視聴しているすべての人に対して 1 分ごとに 1 ポイントを追加する別のカウントを作成したいと考えています。

視聴者数を取得する関数は次のとおりです。

  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 の両方に本当に慣れていないので、この関数には多くの間違いがあるに違いないと思います。だからどんな助けも大歓迎です。ありがとう。

4

1 に答える 1

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.
于 2012-10-25T09:12:40.777 に答える