4 回答
TA贡献1780条经验 获得超5个赞
您的代码首先将所有字母渲染为红色,然后将所有字母渲染为橙色等,然后将所有字母渲染为紫色,因为您在另一个循环中有一个循环。对于每种颜色,它使用内部 for 循环绘制所有字母,并迭代它们。
这里有同样的问题,但它需要每个字母并用所有颜色绘制它,以紫色结尾。对于每个字母,您采用所有颜色。
TA贡献1829条经验 获得超4个赞
这是一个不错的方法。评论里的一些想法
const rainbow = document.querySelectorAll("span");
const colors = ['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'];
for (let i = 0; i < rainbow.length; i++) { // use the length of rainbow because we want all spans to have a color
rainbow[i].style.color = colors[i % colors.length]; // cycle through colors if there are more elements in rainbow than in colors
}
<h1>
<span>R</span>
<span>A</span>
<span>I</span>
<span>N</span>
<span>B</span>
<span>O</span>
<span>W</span>
<span>R</span>
<span>A</span>
</h1>
TA贡献1848条经验 获得超10个赞
了解自己使用的东西
console.log(i) console.log(colors[i])
在内部 for 循环中。在内循环之后和外循环结束之前添加:
console.log() // This will create a new line and makes debugging the output easy.
一旦您了解了循环发生的情况,您就可以在以后轻松地调试不同类型的双循环。
情况1:当最后一个外循环运行时i = colors.length - 1
。这意味着正在使用紫色。内循环迭代彩虹一词中的所有字母,因此所有单词最终都是紫色。
情况2:当外循环第一次运行时,考虑字母r。但内循环迭代从红色到紫色的所有颜色,因为最后一个颜色是紫色,所以字母 r 被分配为紫色。
当外循环第二次运行时,考虑字母 a。但内循环迭代从红色到紫色的所有颜色,因为最后一个颜色是紫色,所以字母 a 被分配为紫色。。。。。。。考虑外循环最后一次运行字母 w 的时间。但内循环迭代从红色到紫色的所有颜色,因为最后一个颜色是紫色,所以字母 w 被分配为紫色。
每当您陷入循环时,请使用打印语句来调试逻辑中发生的情况。
TA贡献1878条经验 获得超4个赞
Const spans = document.querySelectorAll('span');
for(let i=0; i<=colors.length ; i++){
spans[i].style.color = colors[i];
}
添加回答
举报