Firefox返回TypeError:document.getElementById(...)为null但Chrome工作正常

时间:2015-08-05 22:16:11

标签: javascript jquery ajax

我已经看到了很多关于此的问题,我想我几乎扫描了所有这些问题,但还没有找到解决我问题的方法。

正如我在标题中提到的,Firefox(和IE)返回此异常TypeError: document.getElementById(...) is null,而Chrome和Safari工作正常。

我有在线代码,你可以在这里查看:http://178.62.244.224/(该网站是葡萄牙文,但与此问题无关)。

问题:当点击左侧的某个优化时,Chrome会按预期运行,并在通过Ajax加载新内容时切换复选框。在Firefox中执行此操作时,复选框不会切换(但是ajax调用因内容更改而起作用)并且上述异常显示在控制台中。

它指向的代码位于getElementById行中此函数的script.jshttp://178.62.244.224/static/script.js)中:

function toggleAllFilters(filters) {
    for (i = 0; i < filters.length; i++){
        var filter = filters[i];
        document.getElementById(filter).checked = true;
    }
};

在ajax调用中getFilters()调用此函数:

$.get(url, function (response) {
            document.open();
            document.write(response);
            document.close();
            toggleAllFilters(filters);
        });

正如其他类似问题所指出的,这似乎与以下事实有关:在执行document.getElementById时,页面可能尚未完全加载且找不到元素。出于这个原因,我已经script.js移到</body>之前的页面末尾,但这没有效果。

很明显,Firefox / IE以不同的方式解释了这一点,但我真的无法以何种方式找到它。有什么想法吗?

1 个答案:

答案 0 :(得分:-1)

用引号括起选择器。

getElementById('filter')

上面你要找的是变量指针,而不是实际的DOM元素。