2010-01-31 32 views
29

Estoy tratando de cambiar el color de la función swapFE() a continuación y no puedo encontrar la manera de escribirlo. Me dijeron que cambie el color de la frase nodo al valor del color (155, 102, 102). Traté de hacerlo como puede ver al final de la función see- parent.childNodes [1] .style.color = (155, 102, 102); pero solo sale un azul marino oscuro. Se supone que es un rojo pardusco. No tengo idea de lo que estoy haciendo mal. ¿Cómo puedo solucionar esto para obtener el color RGB correcto? Sé que tengo el resto, es solo averiguar cómo escribir el color y el valor que me está causando problemas. ¡Gracias!¿Cómo escribo un valor de color RGB en JavaScript?

//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"; 

Respuesta

50

intento:

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

O

parent.childNodes[1].style.color = "#"+(155).toString(16)+(102).toString(16)+(102).toString(16); 
+0

parent.childNodes [1] .style.color = "rgb (155, 102, 102) "; ....¡trabajó! Muchas gracias! – Ashley

+1

¡Advertencia! La segunda solución no funciona si uno de los colores es <16. Ejemplo para rojo puro: '" # "+ (255) .toString (16) + (0) .toString (16) + (0) .toString (16) 'da' # FF00' que no es un código de color correcto. – Dunatotatos

8

esta es una mejor función

function RGB2HTML(red, green, blue) 
{ 
    var decColor =0x1000000+ blue + 0x100 * green + 0x10000 *red ; 
    return '#'+decColor.toString(16).substr(1); 
} 
12

He aquí una función simple que crea una cadena de color CSS de valores RGB que van desde 0 a 255:

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

alternativa (para crear un menor número de objetos de cadena), se puede usar una matriz join():

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

Las funciones anteriores sólo funcionará correctamente si (r, g, b) son números enteros entre 0 y 255. Si no son enteros, el sistema de color será tratarlos como en el rango de 0 a 1. para tener en cuenta los números no enteros, utilice la siguiente:

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

estoy mostrando con un ejemplo de agregar color aleatorio. Se puede escribir de esta manera

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; 

La propiedad se espera como una cadena

-1
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) }; 

y:

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