2017-02-26 11 views
0

私は、グループが最後にあった状態を表示するためにボタンを更新する必要があります。つまり、ジャッジ1は0を記録しました。すべての得点が入力された後、私は得点を確定します。私は最後の得点が何であるかを示したい。
enter image description hereJavaScriptを取得してクラスを変更する(変数付き)

私の問題は、2つのループの内側からクラスを取得していることです。コンソールは私に言っている:

function updateJudgeLast(){ 
    for(j=1;j<5;j++){ 
     for(i=0;i<6;i++){ 
      var judgeScore ="#btnJudge"; 
      judgeScore += j; 
      judgeScore += "_"; 
      judgeScore += i; 
      console.info(judgeScore); 

      var testLast = document.getElementById(judgeScore).className.split(' ')[1]; 
      console.info(testLast); 

      switch(testLast){ 
      case "btn-default": break; 
      case "btn-last": $(judgeScore).attr("class", "btn btn-default"); break; 
      case "btn-primary": $(judgeScore).attr("class", "btn btn-last"); break; 
      } 
     } 
    } 
} 

judgeScoreは、それが出力するループ内のクラスを取得するための要素のidです:"#btnJudge1_0"その後、"#btnJudge1_1"ここ

Uncaught TypeError: Cannot read property 'className' of null at updateJudgeLast (scripts.js:278)

は私の関数です。私がコンソールをチェックすると、それは正しく印刷されますが、クラスを確認するためにそれを得ることができないので、 nullです。私は何を取りこぼしたか?

背景:これはESP8266でFastLEDを実行しているスコアボードです。コードはJSONとJSを使用して必要に応じてページとボードを更新しています。

+1

絵の後ろにあなたのHTMLを投稿! –

答えて

2

document.getElementByIdを使用する場合、IDは'#'で始めるべきではありません。

var judgeScore ="btnJudge"; // remove # 
    judgeScore += j; 
    judgeScore += "_"; 
    judgeScore += i; 
var testLast = document.getElementById(judgeScore).className.split(' ')[1]; 

またはdocument.querySelectorを使用して、このような'#'を保つ:これを試してみてください

var judgeScore ="#btnJudge"; // keep # 
    judgeScore += j; 
    judgeScore += "_"; 
    judgeScore += i; 
    console.info(judgeScore); 
var testLast = document.querySelector(judgeScore).className.split(' ')[1]; // and use querySelector 
+0

それは私が逃したものです。ありがとうございました! – paves

関連する問題