我已经看到了很多关于此的问题,我想我几乎扫描了所有这些问题,但还没有找到解决我问题的方法。
正如我在标题中提到的,Firefox(和IE)返回此异常TypeError: document.getElementById(...) is null
,而Chrome和Safari工作正常。
我有在线代码,你可以在这里查看:http://178.62.244.224/(该网站是葡萄牙文,但与此问题无关)。
问题:当点击左侧的某个优化时,Chrome会按预期运行,并在通过Ajax加载新内容时切换复选框。在Firefox中执行此操作时,复选框不会切换(但是ajax调用因内容更改而起作用)并且上述异常显示在控制台中。
它指向的代码位于getElementById行中此函数的script.js
(http://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以不同的方式解释了这一点,但我真的无法以何种方式找到它。有什么想法吗?
答案 0 :(得分:-1)
用引号括起选择器。
getElementById('filter')
上面你要找的是变量指针,而不是实际的DOM元素。