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];
}
添加回答
舉報