1

私はJavaScriptで作業しています。問題が発生しています。つまり、divタグの周囲に動的に境界線を配置したいのです。私のコードは以下です:

function myfunction(var1) {
    if (document.getElementById(var1).style.border = "0px") {
        document.getElementById(var1).style.border = "1px solid green";
    } else {
        document.getElementById(var1).style.border = "0px";
    }
}

コードは初めて境界線を配置しますが、境界線を削除することはありません。つまり、他の部分は機能していません。どんな助けでもいただければ幸いです。

4

5 に答える 5

4

あなたの声明は正しくありません。そのはず...

function myfunction(var1) {
    if(document.getElementById(var1).style.border == "0px") {
        document.getElementById(var1).style.border = "1px solid green";
    } else {
        document.getElementById(var1).style.border = "0px";
    }
}

JavaScript=では代入演算子です。比較には、等式演算子を使用する必要があります==

ステートメント0pxは要素に割り当てられてから停止します。割り当ては毎回評価されるため、は起動elseしません。true

Comparison Operator             Example    Result
==  Equal To                    x == y     false
!=  Not Equal To                x != y     true
<   Less Than                   x < y      true
>   Greater Than                x > y      false
<=  Less Than or Equal To       x <= y     true
>=  Greater Than or Equal To    x >= y     false

以下のコメントで述べられているように、恒等演算子(===)は実際には等式演算子(==)よりも優れています。恒等(===)演算子は、型変換が行われないことを除いて、等式(==)演算子と同じように動作します。また、型が等しいと見なされるには、型が同じである必要があります。この場合、文字列は別の文字列と比較されているため、===代わりに使用できます。

于 2013-01-09T13:40:15.753 に答える
2

あなたのifには論理演算子が含まれている必要があります:

if(document.getElementById(var1).style.border = "0px")

if(document.getElementById(var1).style.border == "0px")
于 2013-01-09T13:40:38.087 に答える
2

あなたのif条件は常に真です:

style.border = "0px"

=あなたの要素にborder = 0px常に真のスタイルを割り当てます。==比較演算子を使用するか、さらには恒等演算子を使用する必要があります===

style.border == "0px"

また、条件が初めてチェックされた場合、プロパティが設定されているかどうかを確認する必要があります。style.borderこれは、インライン スタイルのみを認識し、最初は設定されていない可能性が高いためです。

きれいな方法は次のとおりです。

var el = document.getElementById(var1);
if(!el.style.border || el.style.border == "0px")
    el.style.border = "1px solid green";
} else {
    el.style.border = "0px";
}
于 2013-01-09T13:40:39.377 に答える
-3

あなたがしたいだろう

if(document.getElementById(var1).style.border == "0px") // note two = signs

いいえ

if(document.getElementById(var1).style.border = "0px")

そして、境界線を「なし」に設定したいと思っていたでしょう

document.getElementById(var1).style.border = "none";
于 2013-01-09T13:40:33.150 に答える