$(d).attr(“id”)是未定义的javascript

$(d).attr(“id”)是未定义的javascript,javascript,jquery,firebug,Javascript,Jquery,Firebug,我有一个变量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 {

我有一个变量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");
        }
    }
}
$(函数(){

对于(i=1;i为什么不直接检查
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");
         }
    }
}
$(函数(){

对于(i=1;i好的,新答案。你这样做的方式不是很“jqueryish”。让我们退一步。从我可以告诉你的html结构类似于:

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

由于您是按id选择的,因此这是多余的:

if ($(d).attr("id").substr(4,2) == 11)
因为d的ID属性是d

最简单的方法是:

if (i == 11)

缺少结束括号

$(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 });
}
$(函数(){

对于(i=1;i由d引用的元素是否有id?您从何处获取d?d中的内容是什么?选择器是否确实存在?您是否也在使用JavaScript库?如果是,是哪一个(看起来像jQuery)是的,jQuery很抱歉,有些月份的天数少于31天,因此可能您正在尝试访问不存在的元素。请尝试将检查修改为if($(d)和&$(d).attr(“id”).substr(4,2)==11{…因为d包含id“#days”我用它来选择某些元素我知道,但它似乎是多余的。你创建了“#days11”,选择了与“#days11”匹配的元素,并查看它是否包含“11”。只有当“I==11”时才会返回真值。阅读更多代码,11是任意的似乎是合乎逻辑的,为什么11总是唯一有日期的元素,以及如果你已经知道了,为什么还要费心去寻找它呢?+1:这个解决方案更简单,因为它更容易解释可能是其他数字的子集的数字(例如1和10)。这个解决方案的性能也更低。强制javascript循环,然后每次都执行一个选择器是绕过内置功能的“硬方法”在jquery中需要$(“#”+elementId)。对不起,什么?我不是在选择id,而是在选择类并遍历它们。如果在循环中使用选择器,那么这个示例完全适合jquery+1,您可能做错了什么。
if ($(d).attr("id").substr(4,2) == 11)
if (i == 11)
$(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 });
}