Firefox返回TypeError: document.getElementById(..)为空,但Chrome工作正
Firefox returns TypeError: document.getElementById(...) is null but Chrome works fine
我已经看到了很多关于这个的问题,我想我已经浏览了几乎所有的问题,但还没有找到解决我问题的方法。
正如我在标题中提到的,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;
}
};
这个函数在getFilters()
中被ajax调用:
$.get(url, function (response) {
document.open();
document.write(response);
document.close();
toggleAllFilters(filters);
});
正如在其他类似问题中指出的那样,这似乎与这样一个事实有关,即在执行document.getElementById
时,页面可能尚未完全加载并且未找到元素。出于这个原因,我已经将script.js
移动到</body>
之前的页面末尾,但这没有效果。
很明显,Firefox/IE以不同的方式解释这一点,但我真的不知道是什么方式。什么好主意吗?
将选择器用引号括起来。
getElementById('filter')
你在上面寻找的是一个变量指针,而不是一个实际的DOM元素。
相关文章:
- 如果文本字段为空,则使用JavaScript应用CSS样式
- ReactJS映射:如何仅在url变量不为空时呈现html链接
- 如果localstorage为空,则显示欢迎消息
- 使用 jQuery 检查所有值是否为空或已填充
- 如果值为空,如何设置输入的默认值?jQuery
- 如何检查元素的内容是否为空,如果为空,请在jquery中删除该元素
- 无法在javascript中访问PHP数组,初始化为数组的javascript对象在chrome开发工具中最终为空
- 'Body'在chrome扩展中打开默认电子邮件客户端时为空
- 错误:“null”为空或不是IE8中的对象,而不是Chrome或Firefox
- 下载被 Chrome 阻止的 xml 和 svg 文件的 zip 存档(无论是否为空)
- 从 http 处理程序返回的 JSON 在 IE8 中为空,但在 IE10 或 Chrome 中不是
- 无法在 Chrome 扩展程序中将属性“innerHTML”设置为空
- 谷歌Chrome扩展获取所选文本有时为空
- GM_xmlhttpRequest responseText在Firefox中为空,但在Chrome中是完美的
- windows .opener.location在IE中为空.在Chrome中工作良好
- Chrome异常对象(几乎)为空
- chrome中节点的getComputedStyle为空
- Firefox返回TypeError: document.getElementById(..)为空,但Chrome工作正
- 在chrome应用程序中从webview打开窗口打开器时为空
- HTML响应头在firefox/chrome中为空,但在IE中有效