gpt4 book ai didi

javascript - IE9 无法获取未定义或空引用的属性 'remove'

转载 作者:行者123 更新时间:2023-11-30 10:11:07 25 4
gpt4 key购买 nike

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

浏览器在尝试删除类时停止,因为它“无法获取未定义或空引用的属性‘remove’”。但是,变量已定义且元素存在于 DOM 中。

如果我转到一个没有横幅的页面,该函数不会触发(这是预期的行为),所以从逻辑上讲,这不是搞砸的条件,它会找到 dom.$banner 很好,但只是为了测试我已经尝试给元素一个 ID,并在我的方法之前声明它。那并没有解决问题。

我的文档底部使用 defer async 引用了脚本文件。

我在这里做错了什么?

最佳答案

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

关于javascript - IE9 无法获取未定义或空引用的属性 'remove',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26622410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com