我正在一个网站上工作,有时我需要在我的标题中加载一个大横幅。标题有一些默认样式,如果特定页面有横幅,我需要删除它。这些额外的样式在一个类中,如果存在横幅,则将其从服务器端移除。它适用于所有浏览器,IE9除外。
document.onreadystatechange = function () {
// Initialize app when document is "ready"
if (document.readyState == "complete") {
var dom = {};
dom.$header = document.querySelector('.js-header');
dom.$banner = document.querySelector('.js-banner-image');
resizeBanner();
}
}
function resizeBanner(){
if(dom.$banner && dom.$banner !== null && dom.$banner !== undefined) {
dom.$header.classList.remove('has-no-banner');
}
}
浏览器在尝试删除类时停止,因为它“无法获取未定义或空引用的属性'删除”。但是,定义了变量,元素存在于DOM中。
如果我去一个没有横幅的页面,该函数不会触发(这是预期的行为),所以逻辑上它不是条件搞砸了,它发现dom.$banner
就好了,但只是为了测试我已经尝试给元素一个ID,并在我的方法之前声明。这并没有解决问题。
脚本文件在我的文档底部用defer async
引用。
我在这里做错了什么?
答案 0 :(得分:4)
IE9不支持.classList
属性。使用更传统的方式添加/删除类,如下所示:Adding and Deleting from objects in javascript