Как мне написать значение цвета RGB в JavaScript? - PullRequest
36 голосов
/ 31 января 2010

Я пытаюсь изменить цвет функции swapFE () ниже и не могу понять, как ее написать. Мне сказали изменить цвет узла фразы на значение цвета (155, 102, 102). Я попытался сделать это, как вы можете видеть в конце функции see- 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"; 

Ответы [ 5 ]

58 голосов
/ 31 января 2010

попробовать:

parent.childNodes[1].style.color = "rgb(155, 102, 102)"; 

или

parent.childNodes[1].style.color = "#"+(155).toString(16)+(102).toString(16)+(102).toString(16);
12 голосов
/ 28 июля 2013

Вот простая функция, которая создает цветную строку CSS из значений RGB в диапазоне от 0 до 255:

function rgb(r, g, b){
  return "rgb("+r+","+g+","+b+")";
}

В качестве альтернативы (для создания меньшего количества строковых объектов) вы можете использовать массив join ():

function rgb(r, g, b){
  return ["rgb(",r,",",g,",",b,")"].join("");
}

Вышеуказанные функции будут работать должным образом, только если (r, g и b) являются целыми числами от 0 до 255. Если они не являются целыми числами, система цвета будет обрабатывать их как в диапазоне от 0 до 1. нецелые числа, используйте следующее:

function rgb(r, g, b){
  r = Math.floor(r);
  g = Math.floor(g);
  b = Math.floor(b);
  return ["rgb(",r,",",g,",",b,")"].join("");
}
9 голосов
/ 06 января 2013

это лучшая функция

function RGB2HTML(red, green, blue)
{
    var decColor =0x1000000+ blue + 0x100 * green + 0x10000 *red ;
    return '#'+decColor.toString(16).substr(1);
}
4 голосов
/ 03 февраля 2015

Я показываю на примере добавления случайного цвета. Вы можете написать так

var r = Math.floor(Math.random() * 255);
var g = Math.floor(Math.random() * 255);
var b = Math.floor(Math.random() * 255);
var col = "rgb(" + r + "," + g + "," + b + ")";
parent.childNodes[1].style.color = col;

Свойство ожидается в виде строки

0 голосов
/ 08 августа 2017
dec2hex = function (d) {
  if (d > 15)
    { return d.toString(16) } else
    { return "0" + d.toString(16) }
}
rgb = function (r, g, b) { return "#" + dec2hex(r) + dec2hex(g) + dec2hex(b) };

и

parent.childNodes[1].style.color = rgb(155, 102, 102);
...