2 回答
TA贡献1784条经验 获得超8个赞
你的.querySelectorAll()返回数组,所以你需要循环它。此外,您应该调用new random每个元素,而不是一次,否则它将包含相同的图像
window.onload = function() {
let myPics = ['https://via.placeholder.com/150?text=1', 'https://via.placeholder.com/150?text=2', 'https://via.placeholder.com/150?text=3',
'https://via.placeholder.com/150?text=4', 'https://via.placeholder.com/150?text=5', 'https://via.placeholder.com/150?text=6'
];
function showPics() {
document.querySelectorAll('.img').forEach(function(tag) {
let index = getRandomIndex();
tag.src = myPics[index];
tag.addEventListener('click', getImageName);
tag.dataset.index = index;
})
}
function getRandomIndex() {
return Math.floor(Math.random() * myPics.length);
}
function getImageName() {
alert(myPics[this.dataset.index])
}
showPics();
}
<table>
<tr>
<td><img src "" class="img"></td>
<td><img src "" class="img"></td>
<td><img src "" class="img"></td>
</tr>
<tr>
<td><img src "" class="img"></td>
<td><img src "" class="img"></td>
<td><img src "" class="img"></td>
</tr>
</table>
为了获得不重复的图像,请跟踪您已经使用的索引(确保您有更多或相同数量的图像然后是占位符)。
let usedImages = {};
function getRandomPic {
let randomPic;
do {
randomPic = Math.floor(Math.random() * myPics.length);
} while (usedImages[randomPic] === true);
usedImages[randomPic] = true;
return myPics[randomPic];
}
TA贡献1869条经验 获得超4个赞
changing在您想要更改和更改的所有图像中添加像图像这样的类showPics,并且您不需要放置new关键字来创建数组[]就可以正常工作,并且不要将随机图像存储在始终为您提供相同图像的变量中.
function showPics() {
document.querySelectorAll('.changeImages').forEach(val => {
val.src = myPics[Number(Math.floor(Math.random() * myPics.length))];
})
}
添加回答
举报