0

次のように使用する変数 d があります。

$(function() {  
    for(i = 1; i <= 31; i++) {
        var d = '#days' + i;    
        if ($(d).attr("id").substr(4,2) == 11) {
            $(d).addClass("date_has_event");
            //console.log("diez");
        } else {
            console.log("otro");
        }
    }
}

ただし、firebug で次のエラーが発生します。

$(d).attr("id") は未定義です
index.html (L23) (?)()()
jquery.min.js (L27) onreadystatechange()()
jquery.min.js (L27) onreadystatechange()()
jquery.min.js (L21) nodeName()([関数(), 関数()], 関数(), 未定義)
onreadystatechange()()

理由が本当にわかりません。誰か知っていますか?


編集

実行しなければならなかった説明が不十分で申し訳ありません。ここで、何が起こっているのかをもう少し詳しく説明します。JavaScriptを使用してカレンダーを生成しています。各 td には異なる ID があり (したがって、#days + i)、1 から 31 まで実行しているので、より長い月をカバーできます。ただし、上記のエラーが発生します。また、jQuery ライブラリを使用して、より簡単に選択できるようにしています (つまり、getElementById の代わりに #days のみ)。

4

4 に答える 4

8

かどうかを確認i == 11してから、処理を行いませんか?それはまだ でしか発火しません$('#days11')。編集:要素も存在することを確認する必要がある場合は、それを条件に平手打ちします。

$(function(){   
    for(i = 1; i <= 31; i++){
        var d = '#days' + i;    

//       if($(d) && i == 11){            
         if(i == 11){
               $(d).addClass("date_has_event");
               //console.log("diez");
         }else{
               console.log("otro");
         }
    }
}
于 2009-04-02T14:49:28.830 に答える
3

わかりました、新しい答え。これを行う方法は、あまり「jqueryish」ではありません。少し後退しましょう。私が言えることから、次のようなhtml構造があることがわかります。

<div id="days1"></div>
<div id="days2"></div>
...

次に、days(num) ID を持つすべてのアイテムに対してこれを実行していますか? より良い解決策はこれです。日付を含むすべての要素にクラスを追加する場合は、最初にクラスを適用します。

<div class="days"></div>
<div class="days"></div>

あなたのコードは、

$(function(){
    $(".days").each(function(i){
        if($(this).substr(4,2) == 11){
            $(this).addClass("date_has_event");
        }
    });  
});
于 2009-04-02T14:49:34.773 に答える
1

IDで選択しているため、これは冗長です。

if ($(d).attr("id").substr(4,2) == 11)

dのID属性がdであるためです

最も簡単に実行できます。

if (i == 11)
于 2009-04-02T14:58:11.960 に答える
0

閉じ括弧がありませんか?

$(function() {  
    for(i = 1; i <= 31; i++) {
        var d = '#days' + i;    
        if (i == 11) {
            $(d).addClass("date_has_event");
            //console.log("diez");
        } else {
            console.log("otro");
        }
    }
// shouldn't the next line be });
}
于 2009-04-02T15:09:14.383 に答える