如何在JavaScript中更改一个字母的颜色?

如何在JavaScript中更改一个字母的颜色?,javascript,html,css,Javascript,Html,Css,我有一个字符串,我只想在JavaScript中更改一个颜色字母 HTML: 但是我不知道如何改变一个单词的颜色,例如hello的“o”。 如果我因为 对于var i=0;i可以对元素的属性使用该方法: const元素=document.querySelector'lettslist'; element.innerHTML=element.innerHTML.replace'o','o'; 您好在您的代码中: var letters = document.getElementById() 实

我有一个字符串,我只想在JavaScript中更改一个颜色字母

HTML:

但是我不知道如何改变一个单词的颜色,例如hello的“o”。 如果我因为

对于var i=0;i可以对元素的属性使用该方法:

const元素=document.querySelector'lettslist'; element.innerHTML=element.innerHTML.replace'o','o'; 您好在您的代码中:

 var letters = document.getElementById()
实际上,您检索的是整个元素,而不是其中的文本。这可能是它完全改变颜色的原因

所以我建议你使用

document.getElementById().innerHtml()
。 此函数将检索HTML标记div中的内容。然后您可以像

for(var i = 0; i<letters.length; i++){
    //only change the one you want to
    if(i == 4 // or whatever you like){
        element.innerHTML = element.innerHTML.replace(letters[i], '<span style="color: yellow;">'+letters[i]+'</span>');
    }
}
它与

for(var i = 0; i<letters.length; i++){ if(i == 4 { element.innerHTML =element.innerHTML.replace(letters[i], '<span style="color:yellow;">'+letters[i]+'</span>');}}

但是如果一个单词包含两个相似的字母,我不能同时给这两个字母上色。。。为什么会这样?

如果一个单词包含两个相似的字母,那么对于for循环,我们可以使用字母的位置作为i在里面
如果i==n,replaceletter[n],样式化span标记

它会更改所有文本当然,你确定吗???是的,我确定;lettres.length和lettres[i]将是未定义的:@SarahB,因为它根据字母在该单词中的位置为字母着色。if条件设置为找到一个具有特定位置的字母(单词的第4位到第5位)来给单词中的所有字母上色您需要将if条件更改为if(字母[i]==o//或任何其他需要上色的字母,然后再进行颜色更改。呃,我刚刚意识到这是一个糟糕的解决方案。您应该使用str.replace()要直接将颜色更改应用于该单词中的所有字母,您需要str.replace/o/g,'
for(var i = 0; i<letters.length; i++){
    //only change the one you want to
    if(i == 4 // or whatever you like){
        element.innerHTML = element.innerHTML.replace(letters[i], '<span style="color: yellow;">'+letters[i]+'</span>');
    }
}
for(var i = 0; i<letters.length; i++){ if(i == 4 { element.innerHTML =element.innerHTML.replace(letters[i], '<span style="color:yellow;">'+letters[i]+'</span>');}}