如何将数组中的 类 随机分配给在 for 循环中创建的元素
How to assign classes in an array randomly to an element created in for loop
我正在使用 for 循环创建许多 div,分配一个 class 名称,并附加到父 div。我遇到的困难是另外包括更多 classes——随机地——来自一个数组。下面是一个片段。
let classesArray = ['slowest', 'slow', 'medium', 'fast', 'fastest'];
let randomClass = classesArray[Math.floor(Math.random() * classesArray.length)];
for (i = 0; i < 100; i++) {
const test = document.createElement('div');
test.className = 'speed ' + randomClass;
document.getElementById('div-parent').appendChild(test);
}
我可以用 'speed' 的 class 创建子 divs 并且随机 class 也被包括在内,但我正在在所有 div 上都是相同的随机 class。
我希望它看起来像这样
<div id="div-parent">
<div class="speed fast"></div>
<div class="speed slow"></div>
<div class="speed medium"></div>
...
但结果是这样的
<div id="div-parent">
<div class="speed fast"></div>
<div class="speed fast"></div>
<div class="speed fast"></div>
...
是否可以从数组中随机 select 一个 class 而不是在所有子 div 上重复?
因为randomClass
是在循环外创建的,它在循环的每次迭代中都有相同的值。
在循环内声明randomClass
,这样它就可以在每次迭代中取新生成的随机数class:
let classesArray = ['slowest', 'slow', 'medium', 'fast', 'fastest'];
for (let i = 0; i < 3; i++) {
let randomClass = classesArray[Math.floor(Math.random() * classesArray.length)];
const test = document.createElement('div');
test.className = 'speed ' + randomClass;
document.getElementById('div-parent').appendChild(test);
}
console.log(document.getElementById('div-parent').innerHTML)
<div id="div-parent"></div>
您的代码有误...
因为 let randomClass = classesArray[Math.floor(Math.random() * classesArray.length)];
存在于外循环中。
移动内循环~
let classesArray = ['slowest', 'slow', 'medium', 'fast', 'fastest'];
for (i = 0; i < 100; i++) {
const randomIndex = Math.floor(Math.random() * classesArray.length));
const randomClass = classesArray[randomIndex];
const test = document.createElement('div');
test.className = 'speed ' + randomClass;
document.getElementById('div-parent').appendChild(test);
}
我正在使用 for 循环创建许多 div,分配一个 class 名称,并附加到父 div。我遇到的困难是另外包括更多 classes——随机地——来自一个数组。下面是一个片段。
let classesArray = ['slowest', 'slow', 'medium', 'fast', 'fastest'];
let randomClass = classesArray[Math.floor(Math.random() * classesArray.length)];
for (i = 0; i < 100; i++) {
const test = document.createElement('div');
test.className = 'speed ' + randomClass;
document.getElementById('div-parent').appendChild(test);
}
我可以用 'speed' 的 class 创建子 divs 并且随机 class 也被包括在内,但我正在在所有 div 上都是相同的随机 class。
我希望它看起来像这样
<div id="div-parent">
<div class="speed fast"></div>
<div class="speed slow"></div>
<div class="speed medium"></div>
...
但结果是这样的
<div id="div-parent">
<div class="speed fast"></div>
<div class="speed fast"></div>
<div class="speed fast"></div>
...
是否可以从数组中随机 select 一个 class 而不是在所有子 div 上重复?
因为randomClass
是在循环外创建的,它在循环的每次迭代中都有相同的值。
在循环内声明randomClass
,这样它就可以在每次迭代中取新生成的随机数class:
let classesArray = ['slowest', 'slow', 'medium', 'fast', 'fastest'];
for (let i = 0; i < 3; i++) {
let randomClass = classesArray[Math.floor(Math.random() * classesArray.length)];
const test = document.createElement('div');
test.className = 'speed ' + randomClass;
document.getElementById('div-parent').appendChild(test);
}
console.log(document.getElementById('div-parent').innerHTML)
<div id="div-parent"></div>
您的代码有误...
因为 let randomClass = classesArray[Math.floor(Math.random() * classesArray.length)];
存在于外循环中。
移动内循环~
let classesArray = ['slowest', 'slow', 'medium', 'fast', 'fastest'];
for (i = 0; i < 100; i++) {
const randomIndex = Math.floor(Math.random() * classesArray.length));
const randomClass = classesArray[randomIndex];
const test = document.createElement('div');
test.className = 'speed ' + randomClass;
document.getElementById('div-parent').appendChild(test);
}