javascript - 幻灯片的多个实例破坏了代码

标签 javascript slideshow onmousemove

有一个问题,当我创建此幻灯片的多个实例时,似乎只有一个实例可以工作。不确定如何重新格式化它,以便它适用于多个实例。

JavaScript

//SLIDESHOW
const slideshow = document.querySelector("section.slideshow")
const images = slideshow.querySelectorAll("img")

slideshow.addEventListener("mousemove", function (event) {
const x = event.offsetX
const width = this.offsetWidth
const percentage = x / width
const imageNumber = Math.floor(percentage * images.length)

images.forEach(image => {
    image.style.zIndex = 0
})

images[imageNumber].style.zIndex = 1

})

HTML

<section class ="slideshow">
    <img src="assets/images/1.png">
    <img src="assets/images/3.png">
    <img src="assets/images/2.png">
</section>

最佳答案

document.querySelector("section.slideshow")将始终选择第一个 <section class="slideshow">它遇到的元素。

如果您希望相同的代码能够处理多个幻灯片元素,则需要将它们全部选择到 NodeList 中。并为每个实例运行初始化代码。

应该是这样的:(未经测试)

const slideshow_instances = document.querySelectorAll("section.slideshow")

for (var i = 0; i < slideshow_instances.length; i++) {
    const slideshow = slideshow_instances[i];
    const images = slideshow.querySelectorAll("img")

    slideshow.addEventListener("mousemove", function (event) {
    const x = event.offsetX
    const width = this.offsetWidth
    const percentage = x / width
    const imageNumber = Math.floor(percentage * images.length)

    images.forEach(image => {
        image.style.zIndex = 0
    })

    images[imageNumber].style.zIndex = 1

    })
}

关于javascript - 幻灯片的多个实例破坏了代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54951240/

相关文章:

javascript - knockout 数据绑定(bind)使表结果消失

javascript - 幻灯片图像在页面加载时爆炸

javascript - 鼠标滚轮滚动 - 更改滚动图像

javascript - D3 强制布局,较大的节点聚集在中心

javascript - 如何从对象中选取随机属性而不在多次调用后重复?

javascript - IE(仅)在幻灯片放映中悬停时获得 margin ? (包含 CSS 和元素链接)

java - 如何在Java中有效地跟踪光标位置?

javascript - 鼠标在屏幕左侧向左移动图像,鼠标在屏幕右侧时相同

javascript - 单元测试 IoJS

javascript - 我怎样才能让这个 jQuery 脚本在 WordPress 上运行?