我正在尝试更改下面的swapFE()函数的颜色,但不知道该如何编写。有人告诉我将短语节点(node)的颜色更改为颜色值(155, 102, 102)。我尝试在函数的最后一行实现了这个目标——parent.childNodes[1].style.color= (155, 102, 102);,但得到的只是深海蓝色。实际上应该是棕红色。我不知道自己哪里出错了。怎样才能修复它以获取正确的RGB颜色?我知道其余部分都正确,只是编写颜色和颜色值的部分让我苦恼。谢谢!
//this function changes the French phrase to an English phrase.
function swapFE(e) {
var phrase = e.srcElement;
//phrase.innerText = english[phrase.id];
var parent = phrase.parentNode;
//childNodes[0] is the number of the phrase +1
var idnum = parent.childNodes[0];
//parseInt takes a textstring and extracts it to make a number. Then you will subtract 1 from the number.
var phrasenum = parseInt(idnum.innerHTML)-1;
phrase.innerText = english[phrasenum];
parent.childNodes[1].style.fontStyle= "normal";
parent.childNodes[1].style.color= (155, 102, 102);
}
function swapEF(e) {
var phrase = e.srcElement;
//phrase.innerText = english[phrase.id];
var parent = phrase.parentNode;
var idnum = parent.childNodes[0];
var phrasenum = parseInt(idnum.innerHTML)-1;
phrase.innerText = french[phrasenum];
parent.childNodes[1].style.fontStyle= "italic";
parent.childNodes[1].style.color= "black";
"#"+(255).toString(16)+(0).toString(16)+(0).toString(16)
会得到#FF00
,这不是正确的颜色代码。 - DunatotatospadStart(2,'0')
。我已经将 G 和 B 值更改为小于 16 进行检查。现在,"#"+(155).toString(16).padStart(2,'0')+(2).toString(16).padStart(2,'0')+(3).toString(16).padStart(2,'0');
的结果是"#9b0203"
,这是预期的结果。参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart - Xavi Montero"rgb(x, y, z)"
对我来说似乎完全疯狂。为什么要让客户端代码从数字构建一个字符串,然后再让浏览器解析该字符串以构建颜色呢?为什么不使用浏览器提供的函数直接返回一个颜色对象,然后将其直接赋值给CSS属性呢? - Tom