IE错误:无法设置属性'的值;样式':对象为null或未定义
IE Error : Unable to set value of the property 'style': object is null or undefined
我不能使用JQuery,但我找不到修复IE8代码的方法。它在所有其他浏览器中都能很好地工作(适用于IE9+)。
这是一个横幅旋转器,它停止在线上工作以隐藏可见的横幅。
var bannerRotation = setInterval(function () {
var img = document.querySelectorAll('#contentBannerRotator img');
var banner = document.querySelectorAll('#contentBannerRotator a[style="display: block;"]');
if (!banner || banner.length < 1)
var banner = document.querySelectorAll('#contentBannerRotator a[style="display:block;"]');
banner[0].style.display = "none"; /* This is where the error occurs */
var rand = Math.floor(Math.random() * img.length);
img[rand].parentNode.style.display = "block";
}, 30000);
IE8似乎找不到与查询选择器匹配的内容。
你可以在这里看到错误直播。
EDIT:文档不处于Quirks模式,因此querySelectorAll
方法应该可以正常工作。
您可以尝试检测元素是否存在:
if(typeof banner[0] != 'undefined') {
banner[0].style.display = "none"; /* This is where the error occurs */
}
更新:
也请阅读此
您的if
主体基本上什么都不做,这是打字错误吗?
var banner = document.querySelectorAll('#contentBannerRotator a[style="display: block;"]');
if (!banner || banner.length < 1)
var banner = document.querySelectorAll('#contentBannerRotator a[style="display:block;"]');
// the exact same selector again? ^
您使用的是同一个选择器,而您似乎希望回退到另一个保证存在的元素。因此,修复选择器,就可以修复该错误。
错误解释
querySelector
和querySelectorAll
没有得到IE8的完全支持,因此它对我的查询的响应不规则。
解决方案
我为IE8创建了一个独立的循环。只有在banner[0]
元素/objet中找不到任何内容或未定义时,才会执行循环
IE8具有用于子节点的特定阵列结构,具有all
阵列。
JavaScript
var bannerRotation = setInterval(function () {
var img = document.querySelectorAll('#contentBannerRotator img');
var bannerContainer = document.querySelector('#contentBannerRotator');
var banner = document.querySelectorAll('#contentBannerRotator a[style="display: block;"]');
if (!banner[0] || banner.length < 1) {
/* Fix for IE8 */
for (var i = 0; i < bannerContainer.childNodes[0].all.length; i++) {
if (bannerContainer.childNodes[0].all[i].nodeName == "A") {
if (bannerContainer.childNodes[0].all[i].style.display == "block") {
bannerContainer.childNodes[0].all[i].style.display = "none";
break;
}
}
}
} else {
banner[0].style.display = "none";
}
var rand = Math.floor(Math.random() * img.length);
img[rand].parentNode.style.display = "block";
}, 30000);
相关文章:
- 谷歌地图API-“;toGeoJson”;返回几何体为null的对象
- 验证对象是否为null Javascript/Angularjs
- 对象为null或IE9中存在未定义错误
- 如何计算一个对象中五个属性中有多少是非null的
- Microsoft JScript运行时错误:无法获取属性'的值;样式':对象为null或未定义
- javascript对象显示为null,但object.properties返回数据
- global.getElementById('..')为null或不是对象
- IE8错误:为null或不是对象,但仍然可以跟踪/控制台注销
- AJAX请求中的JSON对象为Null或空
- Highcharts无法设置属性'的值;要点':对象为null或未定义
- ui.selectmenu投掷'this.newelement.0'为null或不是对象
- 添加到序列化数组中的复杂对象在服务器端始终为 null
- 什么是 ClojureScript 类似地将不存在的对象值设置为 JavaScript 中的 null
- Javascript:将类/对象引用设置为 NULL,内存中的子对象/类会发生什么
- 为什么引用 = null 不会影响引用的对象
- 类型错误:'null'不是对象(正在评估'响应.productType')
- IE错误:无法设置属性'的值;样式':对象为null或未定义
- 我的代码给了我一条错误消息:GetElementById()为null或不是对象
- IE8对象当对象包含null值时应出现错误
- 为iframe获取对象null.使用jsdom和所需选项创建iframe