根据数组为文档中的所有跨度设置不同的字体颜色?
使用 JavaScript,我想<span>
从颜色数组中更改每个样式。下面是一个例子:
HTML:
<span>H</span>
<span>E</span>
<span>L</span>
<span>L</span>
<span>O</span>
JS:
colors=['red', 'orange', 'yellow', 'blue','green'];
[...document.querySelectorAll('span')].map( sp => {
sp.style.color = colors[0];
colors.shift();
});
现在我目前的想法是扩展我的选择和使用,map
以便我可以遍历每个对象。目前,我正在删除正在使用的颜色中的元素。我还可以创建一个迭代器来跟踪颜色,这样它们就不会被删除。假设对象的数量和颜色的数量相同,我也可以通过 for 循环逐步完成并设置颜色。
我怎样才能做到这一点?
回答
因为map()
返回一个新数组并且您不使用它forEach()
在这里将是更好的选择。
您可以分析你里面的箭头功能forEach()
,通过map()
对当前元素,也可以作为可选的,但在这里是非常有用的当前元素的索引。您可以将此索引用作颜色数组的索引。
注意:这里不需要,shift()
所以我删除了它。
这里没有问,但很高兴知道,当您的<span>元素多于颜色时,您可以使用余数运算符%为其他元素赋予正确的颜色。(再次从颜色数组的开头开始)
colors = ['red', 'orange', 'yellow', 'blue', 'green'];
document.querySelectorAll('span').forEach((sp, ind) => {
sp.style.color = colors[ind];
});
<span>H</span>
<span>E</span>
<span>L</span>
<span>L</span>
<span>O</span>