className null或不再是对象

时间:2012-09-22 13:09:08

标签: javascript arrays internet-explorer error-handling

IE的问题。 这是代码:

if (($.browser.msie)) {
    var first_el = 0;
    var targie = document.getElementById(targId).getElementsByTagName("div");
    for (var i = 0; i < targie.length, first_el < 1; i++) {
        if ((typeof targie[i].className != 'undefined') && (targie[i].className != null)) {
            if ((targie[i].className == "category list even") || (targie[i].className == "category list") || (targie[i].className == "good list even") || (targie[i].className == "good list")) {
                var targ = targie[i];
                first_el += 1;
            }
        }
    }
}

错误 - className null or not an object 找到了类似的主题,但解决方案对我没有帮助。

提前致谢

2 个答案:

答案 0 :(得分:1)

我认为这不是实际的错误信息。它更像是cannot access property "classname", targie[i] is null or not an object,不是吗?

您的问题似乎是循环的条件部分:i < targie.length, first_el < 1使用comma operator。这意味着只要没有找到元素,你的循环就会运行 - 即使没有更多的元素。将其更改为i < targie.length && first_el < 1,它应该可以正常工作。

不过,你似乎使用了jQuery。为什么不使用像$("#"+targid+" div.list")这样的DOM选择器?然后,您可以使用每个循环来设置变量,或者只添加:first选择器并继续使用jQuery。

答案 1 :(得分:0)

如果用户的浏览器是IE

,我认为你应该使用getAttribute('class');