javascript - JS函数不访问所有数组图片

标签 javascript arrays

<分区>

我有一个图像数组,因此用户可以单击箭头来更改图像,但只能访问数组索引的前三个图像,而不是其余的。 这是我的代码片段。

 <html>
 <body>
<div id="debug"></div>
<div id="rightDisplay">
<div id="imgread"></div>
<img id="currentImg" alt="RoboustImage" src="http://i.imgur.com/dCS4tQk.jpg" title="click to view full scape" height="50%" width="50%" style="margin-left:20%;" />
<img id="changeImg" alt="clickandchange" src="1461670638_hand-right.png" onclick="changeImage()"></div>

</table>


<script>
var theSource;
var array;
var curImage;

function showImage(imgName) {
    var curImage = document.getElementById('currentImg');
    var thePath = 'http://i.imgur.com/';
    var theSource = thePath + imgName;
    curImage.src = theSource;
    // curImage.alt = imgName;

    // curImage.title = imgName;
}

function changeImage(dir) {
    var img = document.getElementById('currentImg');

    var imgs = ["http://i.imgur.com/dCS4tQk.jpg", "http://i.imgur.com/JKNnuSE.jpg", "http://i.imgur.com/9wHVhck.jpg", "http://i.imgur.com/dCS4tQk.jpg", "http://i.imgur.com/ZqoEU9o.jpg", "http://i.imgur.com/SpBfUZi.jpg", "http://i.imgur.com/JKNnuSE.jpg", "http://i.imgur.com/YwAmPYu.jpg", "http://i.imgur.com/T7NBjJm.jpg", "http://i.imgur.com/ujJ3g1k.jpg"];
    img.src = imgs[imgs.indexOf(img.src) + (dir || 1)] || imgs[dir ? imgs.length - 1 : 0];
    // var debug = document.getElementById('imgread').innerHTML=img.src;

}

</script>

最佳答案

您当前的代码不支持您的 imgs 网址中的重复图像。 Array.indexOf 返回元素出现的第一个索引。由于索引 3 处的 URL 也出现在索引 0 处,因此它永远不会再进一步​​。

我会跟踪 javascript 变量中的索引以规避此问题。这是一个例子:

var getNextImageUrl = (function() {

  var currentIndex = 0;
  var imgs = ["a", "b", "c"];

  return function(direction) {

    var dir = direction || 1; // Default direction is forward

    var newIndex = currentIndex + dir;

    // Loop when end is reached
    if (newIndex >= imgs.length) {
      newIndex = 0;
    } else if (newIndex < 0) {
      newIndex = imgs.length - 1;
    }

    currentIndex = newIndex;

    return imgs[currentIndex];

  };

}())

关于javascript - JS函数不访问所有数组图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36864416/

相关文章:

javascript - 如何防止文本选择阻碍 onMouseMove 事件?

javascript - 为什么 'onhashchange' in(window) 有效?

javascript - 如何使用 IronRouter 和 Meteor 将模板渲染为模板

java - Java 数组和 ArrayList 声明中的冗余措辞

php - 使用PHP的“Notice: Undefined variable”,“Notice: Undefined index”和“Notice: Undefined offset”

c - 指针未初始化的问题

javascript - 如何使用包含在另一个元素中的 id 引用 div?

javascript - AngularJs Jasmine 单元测试因意外请求而失败

arrays - 在循环遍历 awk 时删除数组元素 : always safe?

ios - 在数组中查找具有相同颜色的元素,如果它们彼此相邻则打印 true