2016-06-28 11 views
0

私はtd(表のセル)を取り、赤い枠線スタイルを指定するか、またはこれをオフにする簡単なJavaScript関数を作成しています。コードは:JavaScriptの変数にCSSスタイルを割り当てる

function doStuff(theCell) 
{ 
    var highlight = "2px solid rgb(255, 0, 0)"; 
    if(borderStyle==highlight) 
    { 
     theCell.style.border=""; 
    } 
    else 
    { 
     theCell.style.border=highlight; 
    } 
} 

これは問題ありません。しかし、私は(ちょうど最初の下に宣言した)変数によってCSSの境界線スタイルを交換しようとしたコードをきれいにしようとします

var borderStyle = theCell.style.border; 

これは私が等価比較でそれを使用するときに[OK]を動作しますが、いないとき私はそれを 'else'節のスタイル指定に入れました。

私は非常に愚かなことをしようとしているに違いありません。誰でも説明できますか?

+0

ここで、関数内でborderStyleを定義しましたか? – hakJav

+0

'theCell.style.border'は' string'を返します。後で 'else'ブロックの後ろに、文字列を更新して要素に割り当てません。 – Rayon

+2

*私は非常に愚かなことをやろうとしているに違いありません。 'borderStyle'への代入が参照*を割り当てていると仮定すると、' borderStyle'に対する変更は 'theCell.style.border'に影響します。この仮定は誤りです。 –

答えて

2

var borderStyle = theCell.style.border;などのコードを記述すると、JavaScriptはオブジェクトへの参照を作成しません。 borderStyleにはborderの値のみのコピーが割り当てられています。 theCellのオブジェクトは、その場所で無傷のままです。参照は作成されません。

+1

おかげさまで、コメントした人にも。私の顔は私の表のセルの境界線のように赤いです(私はそれを正しくコーディングします)。 – David

関連する問題