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」の値は何ですか?

いくつかの助けをいただければ幸いです。Tnx。

4

2 に答える 2

1

このコードは非常に単純です。変数R、G、およびBにはそれぞれ、R-赤、G-緑、およびB-青の色が含まれています。これは、スタイルが16進形式でカラースルーをまだ表していない場合にのみ発生します。それらは、色を16進数に変換して戻すことができるようにするためにあります。したがって、そうです、ある意味で、変数d1に影響を与えます。背景色のスタイルを次のように設定する場合:background-color:#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を使用してその値を格納し、16進数に変換して、16進数の形式#000000で返します。

于 2012-08-06T02:09:58.510 に答える