我正在尝试遍历我所拥有的导航项目的数量。但是,当我这样做时,出现错误:属性'length'在类型'HTMLElement'上不存在。我知道我可以将document.getElementById('nav-item)更改为document.getElementsByClassName('nav-item'),错误消失了。但是我不是想这样做。我正在通过其ID访问元素。谁能帮我这个忙吗?
const header = document.getElementById('applicationLinks');
const navItems = document.getElementById('nav-item');
for (let i = 0; i < navItems.length; i++) {
navItems[i].addEventListener('click', function () {
const current = document.getElementsByClassName('active');
current[0].className = current[0].className.replace('active', '');
this.className += ' active';
});
}
谢谢您,我是新手,所以我们将不胜感激。
答案 0 :(得分:1)
您的问题是for循环。
代码
const navItems = document.getElementById('nav-item');
不返回元素数组。它返回一个对象。
因此删除for循环。
尝试一下
const header = document.getElementById('applicationLinks');
const navItems = document.getElementById('nav-item');
navItems.addEventListener('click', function () {
const current = document.getElementsByClassName('active');
current[0].className = current[0].className.replace('active', '');
this.className += ' active';
});
}
如果将navItems
更改为document.getElementsByClassName('nav-item');
然后,您将获得对象数组。这将使for循环起作用。