2010-01-31 13 views
29

Próbuję zmienić kolor funkcji swapFE() poniżej i nie mogę wymyślić, jak to napisać. Powiedziano mi, żeby zmienić kolor węzła frazy na wartość koloru (155, 102, 102). Próbowałem to zrobić, jak widać na końcu funkcji see- parent.childNodes [1] .style.color = (155, 102, 102); ale po prostu wychodzi ciemnoniebieski. To ma być brązowawa czerwień. Nie mam pojęcia, co robię źle. Jak mogę to naprawić, aby uzyskać poprawny kolor RGB? Wiem, że mam resztę, tylko zastanawiam się, jak napisać kolor i wartość, która sprawia mi problemy. Dzięki!Jak napisać wartość koloru RGB w 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"; 

Odpowiedz

50

try:

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

Albo

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

parent.childNodes [1] .style.color = „rgb (155, 102, 102) "; .... pracował! Dziękuję bardzo! – Ashley

+1

Ostrzeżenie! Drugie rozwiązanie nie działa, jeśli jeden z kolorów ma wartość <16. Przykład czystego czerwonego: '" # "+ (255) .toString (16) + (0) .toString (16) + (0) .toString (16) 'daje' # FF00', który nie jest poprawnym kodem koloru. – Dunatotatos

8

to lepiej funkcja

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

Oto prosta funkcja, która tworzy ciąg kolorów CSS z wartości RGB, począwszy od 0 do 255:

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

Alternatywnie (w celu utworzenia mniejszej liczby przedmiotów string), można wykorzystać układ przyłączenia():

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

Powyższe funkcje tylko działać poprawnie (r, g, b) są liczbami całkowitymi pomiędzy 0 a 255. Jeśli nie są liczbami całkowitymi, system kolor będzie traktować je jak w przedziale od 0 do 1. w celu uwzględnienia liczb nie jest liczbą całkowitą, należy wykonać następujące czynności:

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

pokazuję na przykładzie dodawania losowego koloru. Można pisać w ten sposób

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; 

Obiekt oczekuje jako ciąg

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

oraz:

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