2010-01-31 37 views
29

我想改變下面的函數swapFE()的顏色,我不知道如何編寫它。我被告知將短語節點的顏色改變爲顏色值(155,102,102)。我試圖做到這一點,你可以在函數的結尾看到parent.childNodes [1] .style.color =(155,102,102);但它只是出來一個黑暗的海軍藍色。它應該是一個棕紅色。我不知道我在做什麼錯。我如何解決這個問題以獲得正確的RGB顏色?我知道我有其餘的權利,只是想出如何編寫顏色和給我帶來問題的價值。謝謝!如何在JavaScript中編寫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"; 

回答

50

嘗試:

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

或者

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

parent.childNodes [1] .style.color =「RGB(155, 102,102)「; ....工作!非常感謝! – Ashley

+1

警告!如果其中一種顏色是<16,則第二種解決方案不起作用。純紅色示例:'「#」+(255).toString(16)+(0).toString(16)+(0).toString(16) )'給出'#FF00',這是不正確的顏色代碼。 – Dunatotatos

8

這是更好的功能

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

這裏有一個簡單的函數,創建一個從RGB值範圍從CSS顏色字符串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(""); 
} 
4

我用一個例子展示添加隨機顏色。你可以寫這樣

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; 

該物業預期爲字符串

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

和:

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