javascript - 类型错误:slides.forEach 不是函数
问题描述
我最近开始学习 JS 库,并尝试在按钮(单击点时向下移动的幻灯片)处于活动状态时将其设为白色。
我得到了这个错误:
类型错误:slides.forEach 不是函数
我的代码是:
function init() {
// wrapper function
const slides = document.querySelectorAll(".slide");
const pages = document.querySelectorAll(".page");
const backgrounds = [
`radial-gradient(#2B3760, #0B1023)`,
`radial-gradient(#4E3022, #161616)`,
`radial-gradient(#4E4342, #161616)`
];
slides.forEach((slide, index) => {
slide.addEventListener("click", function() {
changeDots(this);
});
});
function changeDots(dot) {
slides.forEach(slide => {
slide.classList.remove("active");
});
dot.classList.add("active");
}
}
init();
我做错了什么?我想这是关于箭头的,但仍然不明白为什么我的朋友可以运行它并且它有效,而对我来说却没有。(我将 GSAP 中的 TweenMax.min.js 和 TimelineMax.min.js 添加到了我的 html 中) 在此之前,我在“querySelectorALL”中遇到了同样的问题,我删除了“ALL”,Chrome 也停止喊它不是一个函数.
谢谢!
解决方案
因为它不是array
你应该使用querySelectorAll
而不是querySelector
它会返回NodeLists
const slides = document.querySelectorAll(".slide");
slides.forEach(node => {
node.addEventListener("click", function() {
changeDots(this);
});
});
function changeDots(node){
slides.forEach(slide => {
slide.classList.remove("active");
});
node.classList.add("active");
}
.active{
background-color:#fc0;
}
<div class="slide">
1st slide
</div>
<div class="slide">
2nd slide
</div>
推荐阅读
- java - 如何使用 java 和 reverese 将音频文件(mp3 文件)转换为二进制文件?
- javascript - Discord.js:是否有部分列出对旧消息的新反应?
- java - Java - 递归调度计时器任务
- javascript - 如何使用 openseadragon 为数组中的单个图块源添加标题?
- python - 在不使用 .replace 的情况下替换打印函数中的字符
- php - Laravel 5.8 全新部署在 Hostinger 共享主机中不起作用
- c# - 如何使用 NLog 将日志记录范围包含到日志文件中
- publish-subscribe - google.api_core.exceptions.ServiceUnavailable:超过 503 截止日期
- javascript - 对数组进行排序以对匹配元素进行分组但保持原始顺序
- select - 选择:限制所选选项的数量