[英]Change image source using Javascript in a random order
我想編寫一個腳本,用數組中指定的元素隨機更改元素的圖像源。 我寫了以下但“目標”返回未定義?
HTML
<ul>
<li><img src="http://www.placehold.it/20x20" /></li>
<li><img src="http://www.placehold.it/20x20" /></li>
<li><img src="http://www.placehold.it/20x20" /></li>
</ul>
爪哇腳本
let slideImages = [
'http://www.placehold.it/100',
'http://www.placehold.it/101',
'http://www.placehold.it/103',
'http://www.placehold.it/105',
'http://www.placehold.it/99',
'http://www.placehold.it/98',
'http://www.placehold.it/96',
'http://www.placehold.it/107'
]
let totalImages = slideImages.length;
let randomNo = Math.random() * totalImages;
let imageURL = Math.floor(randomNo)
let img = slideImages[imageURL];
let options = document.querySelectorAll('li');
let random = Math.random() * options.length;
let target = options[random];
var fadeImagesFn = (target, img) => {
console.log(img, target);
}
fadeImagesFn(img);
問題在於這兩行:
let random = Math.random() * options.length;
let target = options[random];
Math.random()
返回一個介於 0 和 1 之間的浮點值。乘以options
的length
,您將得到介於 0 和options.length
之間的數字,但不一定是整數。
例如,如果Math.random
返回 0.5,並且有 7 個選項,則random
將包含值3.5
。
隨后,具有非整數的索引options
將簡單地返回undefined
。 您需要再次使這些值積分,例如通過使用Math.floor
。
您正在嘗試訪問數組的浮點索引,這當然是未定義的。 在索引之前使用Math.floor
。
let options = document.querySelectorAll('li');
let random = Math.random() * options.length; // <- float
let target = options[random]; // <- array-like [ float ] = undefined
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.