私は物事を動的に追加している複雑なフォームを持っています。スクリプトの一部では、私はスコアが存在するか否かに基づいて、クラスを追加している:これは、追加/特異的スコア分類を削除するには正常に動作し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を指定しますフィールドはクリアされました。
ご協力いただければ幸いです。これは動的に作成されなかったフィールドでも失敗することに注意してください。それはクラスをクリアしますが、コードが更新されたクラス情報を取得しないようです。
明らかな原因はありませんが、改善しなければならないものは変数の宣言です。このコードは、JavaScriptがブロックスコープを持っているかのように記述されていますが、JS5への議論を制限している場合はありません。関数内の変数は、実際のスコープなので、関数の先頭で宣言する必要があります。また、変数 'scores'は、あなたが示したコードの' var'で全く宣言されていません。その場合、グローバル変数として作成されます。また、すべてのブラウザで問題が表示されるかどうかを確認できますか? DOMを動的に変更する場合、IEの動作が異なる場合があります。 – GertG