-4

これが私のコードです:

  if (document.getElementById("hiddenButton").style.visibility != "visible") {
     document.getElementById("hiddenButton").style.visibility = "visible";
  }
  else {
     document.getElementById("hiddenButton").style.visibility = "hidden";

  }

このコードは、別のボタンをクリックしたときに HTML ボタンを表示および非表示にします。

しかし、私の質問は、なぜそのコードが機能し、これが機能しないのかということです:

  if (document.getElementById("hiddenButton").style.visibility = "hidden") {
     document.getElementById("hiddenButton").style.visibility = "visible";
  }
  else {
     document.getElementById("hiddenButton").style.visibility = "hidden";

  }
4

6 に答える 6

21

あなたの条件は実際には割り当てです:

if (document.getElementById("hiddenButton").style.visibility = "hidden") {

あなたが使用している必要があります==

if (document.getElementById("hiddenButton").style.visibility == "hidden") {
于 2013-02-28T15:37:19.767 に答える
10

=代入操作です。

!=不等式演算子です。

==等価演算子です。

==必要なのはオペレーターだと思います。したがって、コードを次のように置き換えます。

if (document.getElementById("hiddenButton").style.visibility == "hidden") {
于 2013-02-28T15:37:16.120 に答える
6

JS 比較演算子

==      is equal to 
===     is exactly equal to (value and type)
!=      is not equal

例えば:

var x = 1;  //define and assigned and now x equal to 1
x = 3;        //now x equal to 3

if( x == 4) {
    //you won't see this alert
    alert('Hello, x is 4 now');
} else {
    //you will see this alert
    alert('Hello, x hasn not been changed and it is still ' + x.toString());
}
于 2013-02-28T15:38:35.383 に答える
5

あなたの問題は、代入演算子 ( = ) と等価演算子 ( == または ===) を混同していることだと思います。代入演算子は左側を右側にあるものと等しく設定し、等値演算子 ( == または === ) は実際に等値をテストします。

于 2013-02-28T15:38:52.537 に答える
3

単純な「=」は比較対象ではないためです。代わりに「==」を使用してください。

于 2013-02-28T15:37:24.373 に答える
2

Left = Right

これは、「右辺が何であれ、左辺の値として入れてください」という意味です。

すべての比較とその他のチェックは 2 つのシンボルを使用して行われ、単純に値をチェックする場合のあいまいさと不適切な変数の割り当てを制限します。

!= means not equal to
== means equal
=== means equal and same object/datatype
= means "Assign the right side (Or what it evaluates to) to the variable on the left
于 2013-02-28T15:39:09.297 に答える