0

好吧,我正在分析一个 javascript 代码,但我对某些行感到困惑,例如我有这段代码

function getStyle(el,styleProp)
 {
var x = document.getElementById(el);
if (x.currentStyle)
    var y = x.currentStyle[styleProp];
else if (window.getComputedStyle)
    var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);

if (y.substr(0, 1) == "#"){ return y; } else {

var value = y.split(',');

var R = value[0].substr(4);
var G = value[1];
var B = value[2].substr(0, value[2].length-1);

var RGB =  "#" + toHex(R)+ toHex(G)+toHex(B);

return RGB;

 }
}


function toHex(N) {
if (N==null) return "00";
N=parseInt(N); if (N==0 || isNaN(N)) return "00";
N=Math.max(0,N); N=Math.min(N,255); N=Math.round(N);
return "0123456789ABCDEF".charAt((N-N%16)/16)
  + "0123456789ABCDEF".charAt(N%16);
}




function pw (form)
{

var d1, d2, d3;

if (navigator.appName == "Netscape"){
d1= getStyle('content', 'background-color'); 
} else {
d1= getStyle('content', 'backgroundColor'); 
}
     d2=form.Name.value;
     d3=form.Name2.value;

首先,我不知道变量“R”、“G”和“B”在做什么?它们会影响变量“d1”吗?我知道变量“d2”和“d3”是他们所说的值,但是变量“d1”的值是什么?

一些帮助将不胜感激。肿瘤坏死因子。

4

2 回答 2

1

这段代码非常简单。变量 R、G 和 B 各包含一种颜色,R - 红色、G - 绿色和 B - 蓝色。仅当样式尚未以十六进制格式表示颜色时才会发生这种情况。它们在那里能够将颜色转换回十六进制并返回。所以是的,它们确实会影响变量 d1。如果要像这样设置背景颜色样式:背景颜色:#FF00FF d1 将是#FF00FF。如果要像这样设置背景颜色: background-color: rgb(00, 255, 00) d1 将是#0000FF,因为这个函数需要一些不存在的格式,例如:background-color: 00, 255, 00(这不是有效的 CSS)。

一般来说,这似乎是一个名称和编写不佳的代码。

于 2012-08-06T02:10:54.783 回答
0

d1= getStyle('content', 'background-color');将获得内容的背景颜色。如果它的形式是#000000,那么就返回它,如果它是红绿蓝格式(255,255,255),那么R,G,B用于存储该值,然后它转换为十六进制并以十六进制形式返回#000000

于 2012-08-06T02:09:58.510 回答