Не можете сделать несколько, если условия в JavaScript? - PullRequest
0 голосов
/ 18 июля 2011

Я понятия не имею, почему это не работает.Не имеет смысла для меня.

Это возвращает «синтаксическая ошибка: ошибка синтаксического анализа»:

if ($(this).attr("id") === 'search' || opening = true) return false;

Для хорошей меры я также попробовал следующее, что дало тот же результат:

if (1 = 1 && 2 = 2) { return false; }

Ответы [ 6 ]

10 голосов
/ 18 июля 2011

В игре три разных оператора:

  • =: назначение
  • ==: равенство
  • ===: строгое равенство

= фактически изменяет переменную, поэтому вы не должны использовать ее внутри if операторов. То есть вы должны использовать ... || opening == true) вместо ... || opening = true).

7 голосов
/ 18 июля 2011

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

Когда вы ставите opening = true в своем операторе if, вы не проверяете, является ли opening значением true, вы устанавливаете opening в true. Попробуйте использовать ==.

Например,

var x = 5;
if (x == 10) {
    alert("x is 10");
} else {
    alert("x isn't 10");
}

будет отображать «х не 10», а

var x = 5;
if (x = 10) {
    alert("x is 10");
} else {
    alert("x isn't 10");
}

будет отображать «х 10».

1 голос
/ 18 июля 2011

первый пример должен выглядеть так:

if ($(this).attr("id") === 'search' || opening == true) return false;

и второй:

if (1 == 1 && 2 == 2) { return false; }

Обратите внимание, что знак двойного равенства (==) для логических равных не совпадает со знаком одинарного (=), который обрабатывает присвоение переменной.

1 голос
/ 18 июля 2011

У вас есть ошибка в вашем состоянии

if ($(this).attr("id") === 'search' || opening = true) return false;

должно быть

if ($(this).attr("id") === 'search' || opening == true) return false;

проблема со знаком равенства

= отличается от ==

первым является оператор присваивания. второй для сравнения

0 голосов
/ 18 июля 2011

Я думаю, что === не существует.== для проверки равенства

, поэтому if ($(this).attr("id") === 'search' || opening == true) return false; должно быть if ($(this).attr("id") == 'search' || opening == true) return false;

0 голосов
/ 18 июля 2011

Когда вы тестируете так:

opening=true;

На самом деле вы устанавливаете opening в значение true. Вместо этого используйте ==.

Наконец, порядок операций, даже если он правильный, может привести к путанице. Поставьте скобки вокруг каждой части сравнения.

if (($(this).attr("id") === 'search') || (opening == true)) return false;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...