2017-05-11 5 views
0

私は物事を動的に追加している複雑なフォームを持っています。スクリプトの一部では、私はスコアが存在するか否かに基づいて、クラスを追加している:これは、追加/特異的スコア分類を削除するには正常に動作しjqueryクラスが一度削除されました。

var class_name = "form-control score gm"+gm+team; 
    if(!score) { 
     jQuery("#"+hcp_gm_id).val("0"); 
     updateGameScratch(gm, team); 
     updateGameHandicap(gm, team); 
     updateGameTotal(gm, team); 
     if(scoreTypeID==2) { 
      updateMatchPlayGame(gm, team); 
     } 
     updateBowlerSeries(pos, team); 
     jQuery("#"+scoreID).removeClass(); 
     jQuery("#"+scoreID).addClass(class_name) 
     return; 
    } 
    score = Number(score); 
    var class_name = class_name+" p"+slot+team+"_g"+gm; 
    jQuery("#"+scoreID).removeClass(); 
    jQuery("#"+scoreID).addClass(class_name) 

。 p#t _g gmここで、tはチーム略語(訪問者はv、家庭はh)、gmは指定されたゲーム番号です。

私がGoogle Developer Tools内を見ると、スコアが存在する場合にクラスが表示され、スコアフィールドがクリアされている場合は表示されません。これまでのところとても良い:-)

ただし、後でこのクラスを検索します。各クラスは1つのスコアしか持たないようにしてください。

teams.forEach(function(team,key){ 
     for(g=1;g<=games_series;g++) { 
      var error = false; 
      for(b=1;b<=bowlers_team;b++) { 
       var class_name = "p"+b+team+"_g"+g; 
       scores = jQuery("."+class_name).length; 
console.log("Id:"+class_name+" has "+scores+" scores.\r\n"); 
       jQuery("."+class_name).each(function() { 
        score_id = this.id; 
console.log("Score fields:"+score_id+"\r\n"); 
console.log("Class Name:"+jQuery("#"+score_id).attr('class')+"\r\n"); 
       }); 

私はフィールドにスコアを追加し、それを削除した場合、クラスは、Googleの開発者ツールに存在しないが、それはルーチンを通過するとき - それはスコア= 1という報告し、スコアのIDを指定しますフィールドはクリアされました。

ご協力いただければ幸いです。これは動的に作成されなかったフィールドでも失敗することに注意してください。それはクラスをクリアしますが、コードが更新されたクラス情報を取得しないようです。

+0

明らかな原因はありませんが、改善しなければならないものは変数の宣言です。このコードは、JavaScriptがブロックスコープを持っているかのように記述されていますが、JS5への議論を制限している場合はありません。関数内の変数は、実際のスコープなので、関数の先頭で宣言する必要があります。また、変数 'scores'は、あなたが示したコードの' var'で全く宣言されていません。その場合、グローバル変数として作成されます。また、すべてのブラウザで問題が表示されるかどうかを確認できますか? DOMを動的に変更する場合、IEの動作が異なる場合があります。 – GertG

答えて

0

ありがとうございました....あなたのリクエストを見る前に、私のコードでいくつかの大きな問題が発生していました。

関連する問題