IE9无法获取未定义或空引用的属性“删除”

时间:2014-10-29 03:39:17

标签: javascript internet-explorer-9

我正在一个网站上工作,有时我需要在我的标题中加载一个大横幅。标题有一些默认样式,如果特定页面有横幅,我需要删除它。这些额外的样式在一个类中,如果存在横幅,则将其从服务器端移除。它适用于所有浏览器,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引用。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:4)

IE9不支持.classList属性。使用更传统的方式添加/删除类,如下所示:Adding and Deleting from objects in javascript