我正在分析一个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”的值是多少?
一些帮助将不胜感激。 TNX。
答案 0 :(得分:1)
这段代码很简单。变量R,G和B各包含一种颜色,R - 红色,G - 绿色和B - 蓝色。仅当样式尚未以十六进制格式表示颜色时才会发生这种情况。他们可以将颜色转换回十六进制并返回。所以是的,他们确实会影响变量d1。如果要设置背景颜色样式,那么:background-color:#FF00FF d1将是#FF00FF。如果背景颜色将设置如下:background-color:rgb(00,255,00)d1将是#0000FF,因为此函数需要一些不存在的格式,如下所示:background-color:00, 255,00(这不是有效的CSS)。
一般来说,这似乎是一个命名不好的代码。
答案 1 :(得分:0)
d1= getStyle('content', 'background-color');
将获得内容的背景色。如果它以#000000的形式然后返回它,如果它是红绿蓝格式(255,255,255)然后R,G,B用于存储该值,然后它转换为十六进制并以十六进制形式返回#000000