Javascript 轮播让我有时点击两次

标签 javascript

刚刚在这里学习Javascript。我用上一个按钮制作了一个小图像轮播。它大多数情况下都有效,但有时我必须单击它两次才能真正改变。关于为什么这样做以及如何解决它的任何见解?

https://jsfiddle.net/2t79qw4r/6/

var myImage = document.getElementById("mainImage");
var imageArray = ["_images/overlook.jpg", "_images/winery_sign.jpg", "_images/lunch.jpg", "_images/bigSur.jpg", "_images/flag_photo.jpg", "_images/mission_look.jpg"];
var imageIndex = 0;
var prevImage = document.getElementById("prev");

function changeImage() {
  myImage.setAttribute("src", imageArray[imageIndex]);
  imageIndex++;
  if (imageIndex >= imageArray.length) {
    imageIndex = 0;
  }
}

prevImage.onclick = function() {
  if (imageIndex === 0) {
    imageIndex = imageArray.length -1;
  } else {
    imageIndex = imageIndex - 1;
  }
  myImage.setAttribute("src", imageArray[imageIndex]);

};

setInterval(changeImage,3000);

谢谢

最佳答案

你的changeImage函数的顺序颠倒了;在设置之前更新值:

function changeImage() {
    imageIndex++;
    if (imageIndex >= imageArray.length) {
        imageIndex = 0;
    }
    myImage.setAttribute("src", imageArray[imageIndex]);
}

fiddle :https://jsfiddle.net/afptfbs8/

关于Javascript 轮播让我有时点击两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29978927/

相关文章:

javascript - 如何在AngularJS中创建向上/向下投票功能

javascript - 从 C# 为 javascript 变量赋值

javascript - jQuery ui 选项卡 : sliding effect when switiching between tabs

javascript - 如何判断链接资源是否加载成功

javascript - 如何使用 pdf.js

javascript - 更改和分配对象而不产生副作用

javascript - 创建 2d context *without* canvas

javascript - 如何知道当前环境是 chrome 扩展中的 content.js 还是 background.js

javascript - VueJS 和 "vue-markdown",当 `rendered` 事件被触发时 DOM 还没有准备好

javascript - 如何剪切字符串中某些字符后的部分