2010-01-31 54 views
29

Tôi đang cố gắng thay đổi màu của hàm swapFE() bên dưới và tôi không thể tìm ra cách viết nó. Tôi được yêu cầu thay đổi màu của nút cụm từ thành giá trị màu (155, 102, 102). Tôi đã cố gắng làm điều đó như bạn có thể thấy ở cuối hàm see- parent.childNodes [1] .style.color = (155, 102, 102); nhưng nó chỉ phát ra một màu xanh biển đậm. Nó được cho là màu đỏ nâu. Tôi không biết mình đang làm gì sai. Làm thế nào tôi có thể sửa lỗi này để có được màu RGB chính xác? Tôi biết tôi có phần còn lại, nó chỉ tìm ra cách viết màu và giá trị cho tôi vấn đề. Cảm ơn!Làm cách nào để viết giá trị màu RGB trong 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"; 

Trả lời

50

thử:

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

Hoặc

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

parent.childNodes [1] .style.color = "rgb (155, 102, 102) "; ....đã làm việc! Cảm ơn bạn rất nhiều! – Ashley

+1

Cảnh báo! Giải pháp thứ hai không hoạt động nếu một trong các màu là <16. Ví dụ cho màu đỏ tinh khiết: '" # "+ (255) .toString (16) + (0) .toString (16) + (0) .toString (16) 'cung cấp' # FF00' không phải là mã màu chính xác. – Dunatotatos

8

đây là chức năng tốt hơn

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

Dưới đây là một chức năng đơn giản mà tạo ra một chuỗi màu CSS từ các giá trị RGB từ 0 đến 255:

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

Ngoài ra (để tạo ra ít đối tượng string), bạn có thể sử dụng mảng join():

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

Các chức năng trên sẽ chỉ hoạt động đúng nếu (r, g, b) là các số nguyên giữa 0 và 255. Nếu chúng không phải là số nguyên, hệ thống màu sẽ xử lý chúng như trong phạm vi từ 0 đến 1. Để tính số không phải số nguyên, hãy sử dụng như sau:

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

Tôi đang hiển thị ví dụ thêm màu ngẫu nhiên. Bạn có thể viết theo cách này

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; 

Khu nghỉ dưỡng được dự kiến ​​như là một chuỗi

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

và:

parent.childNodes[1].style.color = rgb(155, 102, 102); 
Các vấn đề liên quan