2013-02-28 3 views
-3

Вот мой код:Почему? = Работать и просто = нет?

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"; 

    } 
+3

'=' должно быть '==='. –

+0

, потому что сравнение выполняется с '==' и не только с одним '=' – Najzero

+0

== <- Это оператор равенства в javascript –

ответ

19

Ваше состояние на самом деле назначение:

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

Вы должны использовать ==:

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

Конечно, как глупо со мной. Но когда я делаю это, он все еще не работает в первый раз, когда я нажимаю кнопку, ничего не происходит. Но когда я нажимаю его во второй раз, он работает. Когда я использую! = У меня нет этой проблемы, любая идея почему? – user2100788

+0

Также стоит отметить, что if() выполняется как правдивое, так как присваивание возвращает назначенное значение, которое оценивается –

+1

@ user2100788 Возможно, потому что, когда вы нажимаете первый раз, свойство 'style.visibility' пустое? –

9

= является операцией присваивания.

!= - оператор неравенства.

== является оператором равенства.

Я думаю, что вам нужен оператор ==. Так замените код с:

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

** Серьезно?** Я не вижу, как сарказм помогает пользователю решить его проблему. Просто мое мнение, но он, вероятно, не задал бы вопроса, если бы он не был * серьезно * ... – Zak

+2

@ Zak Согласен. Удалена часть сарказма. :) –

+1

«! =» Не является оператором, это оператор неравенства. Большая разница :) –

3

Это потому, что просто "=" не для comparaison , Вместо этого используйте «==».

+0

Я пришел слишком поздно;) – JoDev

6

JS Comparison operators

==  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()); 
} 
+0

например, ''1' == 1' is ** true **, но' '1 '=== 1' is ** false ** (сравнивается число и строка, оба имеют одинаковое значение, но разные типы). –

+0

@BradChristie: точно! и спасибо за удаление одинарных кавычек. – Kaf

5

Я думаю, ваша проблема в том, что вы путаете оператор присваивания (=) с оператором равенства (== или ===). оператор присваивания устанавливает левую сторону, равную тому, что находится в правой части, а оператор равенства (== или ===) фактически проверяет равенство.

2

Left = Right

Это означает, что «Какой бы ни была правая сторона, поставить его в качестве значения для левой стороны.»

Все сравнения и другие проверки выполняются с двумя символами для ограничения двусмысленности и неправильных назначений переменных, когда вы просто хотите проверить значение.

!= 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 
Смежные вопросы