【发布时间】:2021-02-26 06:25:20
【问题描述】:
我的作品集网站上有一个画廊,它以砖石类型的网格显示我的所有照片。现在我想随机化这些图片而不显示它们超过一次!所以我在图库中没有相同的图像。
// place your images in this array
var random_images_array = [
'Laundry_Shoot (1).JPG',
'Laundry_Shoot (5).JPG',
'Laundry_Shoot (10).JPG',
'Laundry_Shoot (28).JPG'
];
function getRandomImage(imgAr, path) {
path = path || 'images/portfolio/'; // default path here
var num = Math.floor(Math.random() * imgAr.length);
var img = imgAr[num];
var imgStr = '<img src="' + path + img + '" alt = "">';
document.write(imgStr);
document.close();
}
<!-- END FILTER BUTTONS -->
<div class="gallery">
<div class="img filterDiv film portret">
<script type="text/javascript">
getRandomImage(random_images_array, 'images/portfolio/')
</script>
</div>
<div class="img filterDiv film portret">
<script type="text/javascript">
getRandomImage(random_images_array, 'images/portfolio/')
</script>
</div>
<div class="img filterDiv film portret">
<script type="text/javascript">
getRandomImage(random_images_array, 'images/portfolio/')
</script>
</div>
</div>
</div>
【问题讨论】:
-
只需shuffle the array 一次并从左到右使用元素,使用全局索引变量来跟踪使用的最后一个元素。
-
@ibrahimmahrir “使用全局索引...” - 为什么?只需
.shift()(或.pop())数组中的图像。 -
@Andreas OP 可能想稍后使用这些图像,并且索引变量不一定是全局变量,例如它可以隐藏在 IIFE 中。
-
@dylan 你为什么使用多个脚本标签?为什么不生成那些
img.filterDiv.film.portret并直接将它们附加到 dom 中?
标签: javascript html css typescript image