javascript - 未捕获的类型错误:无法在 HTMLImageElement 处读取 null 的属性“classList”
问题描述
所以这是我在我的网站上遇到的问题
Uncaught TypeError: Cannot read property 'classList' of null at HTMLImageElement.
这是我的代码
也许有另一种解决方案来解决这个问题,因为我在其他网站上寻找但仍然没有找到答案
以及此代码的问题
<script>
var menu = document.getElementById('menu');
var nav = document.getElementById('nav');
var exit = document.getElementById('exit');
menu.addEventListener('click', function(e) {
nav.classList.toggle('hide-mobile');
e.preventDefault();
});
</script>
解决方案
用于修复小屏幕上的切换按钮
解决方案:粘贴此代码而不是您的 Javascript 代码并尝试阅读它:
var menu = document.getElementById('menu');
var nav = document.querySelector('nav ul');
var exit = document.getElementById('exit');
menu.addEventListener('click', function(e) {
nav.classList.toggle('hide-mobile');
e.preventDefault();
});
解释:
第一的:
如果你想使用classlist
方法,那么你应该在 HTML <nav>
标签中有一个类。你所做的是你在什么都没有搜索一个类,因为 getElementById('')
它在DOM(HTML 文件)中搜索一个名称与传递的参数匹配的 Id;在你的情况下意味着:
getElementById('nav')
: 它正在搜索一个名为 nav 但你没有的#Id。所以你必须决定:你可以使用getElementById('')
,但你需要在你的<nav>
标签中添加一个名为 nav 的 id;所以<nav id="nav">
。
或者您可以使用document.querySelector('nav')
而不是document.getElementById('nav')
.
第二
解决第一个问题后,您会看到另一个问题,那就是您在小屏幕上的切换按钮不起作用。那是因为您在 上切换“hide-mobile”类<nav>
并且您不希望那样,您想要在<ul>
元素上切换该类,因为它是默认包含“hide-mobile”类的元素。
推荐阅读
- java - 为什么我们的网站只出现在 chrome 浏览器的 iframe 中?
- css - 在分配给不同的变量之前,覆盖具有相同名称的 CSS 变量不起作用?
- anaconda - 如何将一台计算机的 anaconda 环境克隆到另一台计算机的 anaconda
- javascript - 如何管理 requestAnimationFrame
- java - spring.cloud.stream.bindings 属性有什么用。
.consumer.partitioned - flutter - 颤动的网络:范围错误:值不在范围内:12
- javascript - nodeJS 中的 arr.sort() 是如何工作的?
- mobile - 在客户端和服务器之间使用联合登录(Google、FB 等)的正确方法
- mongodb - 在 MongoDB 中表示文件
- python - 如何使用 python 请求登录以每 x 分钟生成 cookie 文件