我想在没有 jQuery 的情况下在 Javascript 中创建一个动态的 next img 函数

I want to create a dynamic next img function in Javascript without jQuery

提问人:Raymond Sam Chia 提问时间:9/28/2023 最后编辑:mplungjanRaymond Sam Chia 更新时间:9/28/2023 访问量:32

问:

我正在尝试在 HTML 中显示图像。具有 2 个功能,用户可以单击下一张或上一张图片。下一个按钮一直工作,直到它到达 中的最大数组并产生错误。这是控制台提供的。而上一个按钮根本不起作用。我尝试研究他们主要使用 jQuery 的解决方案(我还没有了解它,也完全不明白)。有没有其他方法可以限制下一个图像按钮,使其不会递增或递减通过数组?filePathnet::ERR_FILE_NOT_FOUNDfilePath

这是我的代码:

let filePath = ["img/frame/1.png", "img/frame/2.png", "img/frame/3.png", "img/frame/4.png", "img/frame/5.png", "img/frame/6.png", "img/frame/7.png", "img/frame/8.png", "img/frame/9.png"]

let imgResultEl = document.getElementById("img-result-el")
let prevBtnEl = document.getElementById("prev-btn-el")
let nextBtnEl = document.getElementById("next-btn-el")
let index = 0

let prevImg = () => {
  if (index >= filePath.length && index <= 0) {
    index--
    let newPath = filePath[index]
    imgResultEl.src = newPath
  }
}

let nextImg = () => {
  if (index <= filePath.length && index >= 0) {
    index++
    let newPath = filePath[index]
    imgResultEl.src = newPath
  }
}
prevBtnEl.addEventListener("click", prevImg)
nextBtnEl.addEventListener("click", nextImg)

javascript 数组 图像 dom-events

评论

0赞 mplungjan 9/28/2023
JavaScript 数组指示从 0 到 arraylength-1,因此这可能是您遇到问题的原因。如果没有,请使用例如lorempixel的图像创建一个最小的可重现示例
0赞 CBroe 9/28/2023
输入这些函数时,首先执行 /,然后使用 an 检查该值是否超出范围。然后,您可能只想“环绕它”,这意味着如果索引< 0,则将其设置为 ,如果它太大,则将其重置为 0。index--index++iffilePath.length-1
0赞 Jaromanda X 9/28/2023
怎么可能是真的?index 不能同时大于 9 和小于 0!!您提到不使用 jquery,不确定使用 jquery 会有所帮助index >= filePath.length && index <= 0

答:

0赞 mplungjan 9/28/2023 #1

请参阅注释,了解脚本中的明显错误

这是一个更简单的解决方案,只需使用长度和方向

jQuery不是这里的答案

let index = 0;
const navigateImg = (direction) => {
    index += direction;
    // Clamp index
    if (index < 0) index = 0;
    else if (index >= filePath.length) index = filePath.length - 1; // unless you want to wrap
    // Set the image source
    imgResultEl.src = filePath[index];
    // Update the button status
    prevBtnEl.disabled = index === 0;
    nextBtnEl.disabled = index >= filePath.length - 1;
};

// Initial button status
navigateImg(0);
prevBtnEl.addEventListener("click", () => navigateImg(-1));
nextBtnEl.addEventListener("click", () => navigateImg(1));
0赞 Raymond Sam Chia 9/28/2023 #2

用这个修复了它

let index = 0

let newSource = ()=>{
    if(filePath[index]==undefined){
        index = 0
    }
    let newPath = filePath[index]
    imgResultEl.src=newPath
}

let prevImg = () =>{
    index--
    newSource()
}

let nextImg = () =>{
    index++
    newSource()
}
prevBtnEl.addEventListener("click",prevImg)
nextBtnEl.addEventListener("click",nextImg)

评论

1赞 mplungjan 9/28/2023
每次找不到文件时,这将加载图像 0。所以用户不会知道为什么会发生这种情况。也比我的 DRY 少(不要重复自己:)
1赞 Raymond Sam Chia 9/28/2023
是的,我明白。这正是我想要的。由于我只提供固定数量的文件,所以这就足够了。