2010-01-31 7 views
29

J'essaie de changer la couleur de la fonction swapFE() ci-dessous et je n'arrive pas à comprendre comment l'écrire. On m'a dit de changer la couleur du nœud d'expression à la valeur de couleur (155, 102, 102). J'ai essayé de faire cela comme vous pouvez le voir à la fin de la fonction see- parent.childNodes [1] .style.color = (155, 102, 102); mais il sort juste un bleu marine foncé. C'est censé être un rouge brunâtre. Je n'ai aucune idée de ce que je fais de mal. Comment puis-je résoudre ce problème pour obtenir la bonne couleur RVB? Je sais que j'ai le repos, c'est juste de comprendre comment écrire la couleur et la valeur qui me pose problème. Merci!Comment écrire une valeur de couleur RVB dans 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"; 

Répondre

50

essayer:

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

Ou

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

parent.childNodes [1] .style.color = « rgb (155, 102, 102) "; ....travaillé! Merci beaucoup! – Ashley

+1

Attention! La deuxième solution ne fonctionne pas si l'une des couleurs est <16. Exemple pour du rouge pur: '" # "+ (255) .toString (16) + (0) .toString (16) + (0) .toString (16) 'donne' # FF00' qui n'est pas un code de couleur correct. – Dunatotatos

8

c'est une meilleure fonction

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

Voici une fonction simple qui crée une chaîne de couleur CSS à partir des valeurs RVB allant de 0 à 255:

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

Sinon (pour créer moins d'objets à cordes), vous pouvez utiliser le tableau join():

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

Les fonctions ci-dessus ne fonctionne pas correctement si (r, g et b) sont des nombres entiers entre 0 et 255. Si elles ne sont pas des entiers, le système de couleur les traitera comme dans la plage de 0 à 1. pour tenir compte des chiffres non entiers, utilisez ce qui suit:

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

Je montre un exemple d'ajouter une couleur aléatoire. Vous pouvez écrire cette façon

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 propriété est attendue comme une chaîne

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

et:

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