随机化图库数组

时间:2017-04-16 11:01:04

标签: javascript arrays shuffle

我试图随机化图片库。 HTML只包含图像,然后想要获取数组,将其随机播放并将其添加到作为缩略图的div中。我从这里拿了洗牌代码(Durstenfeld版):How to randomize (shuffle) a JavaScript array?

我的代码:

var pics = document.getElementsByTagName("img");

//the Durstenfeld shuffle
for (m = pics.length - 1; m > 0; m--) {
    var k = Math.floor(Math.random() * (m + 1));
    var temp = pics[m];
    pics[m] = pics[k];
    pics[k] = temp;
}

//giving ID to each image and adding them to a thumbnail div
for (e = 0; e < pics.length; e++) {
    pics[e].id = e;
    var photo = document.getElementById(e);
    var parent_section = photo.parentNode;
    var new_div = document.createElement("div");
    new_div.classList.add("thumbnail");
    new_div.appendChild(photo);
    parent_section.appendChild(new_div);
}

问题是,这在IE中运行得非常好,但在我尝试的所有其他浏览器中,图像只是按照默认顺序(它们在HTML中编写的顺序)放置。洗牌本身应该是正确的,所以我确定我的实施有问题,但我无法弄清楚。

1 个答案:

答案 0 :(得分:0)

您的阵列不是阵列。这样做:

var pics = Array.from(document.getElementsByTagName("img"));