операторы if не функционируют правильно - PullRequest
1 голос
/ 12 июля 2010

Я пишу некоторый код jQuery, который включает в себя переход из нескольких функций. В одной функции оператор if используется для выбора места, куда будет идти код. Условием для оператора if является значение переменной, переданной из предыдущей функции. Таким образом, чтобы уточнить, функция передает переменную другой функции, которая затем переходит к другой функции, которая выбирается на основе функции, из которой она возникла.

Вот мой код в JSFiddle: http://jsfiddle.net/VFVk7/

Как вы можете видеть, когда вы нажимаете на любую из кнопок, она обращается ко всем необязательным функциям из оператора If, а не к одной. Кто-нибудь знает, почему это происходит? Большое спасибо!

Ответы [ 3 ]

10 голосов
/ 12 июля 2010

Записав if(origin = 'go1'), вы присваиваете 'go1' переменной origin и передаёте результат этого присваивания (который является строкой 'go1') в оператор if.
Так как все непустые строки являются "правдивыми" в Javascript, это эквивалентно if (true), и все if операторы выполняются.

Вам необходимо сравнить 'go1' переменной origin, записав if (origin === 'go1').

Сводка

  • Оператор = присваивает значение переменной
  • .Оператор == выполняет произвольное сравнение (например, true == '1', 8 == '8', 16 == '0x10', false == []).
  • Оператор === выполняет строгое сравнение.(ни один из приведенных выше примеров не верен с ===)
6 голосов
/ 12 июля 2010

У вас есть код типа

if(origin = 'go1')

, который присваивает 'go1' переменной origin (и проверьте, является ли это "истиной" - что это).Попробуйте вместо:

if(origin == 'go1')

до сравнить вместо , присваивая .

0 голосов
/ 12 июля 2010

Общая проблема.В Java это даст ошибку компиляции, в Javascript все будет работать нормально, возможно, не так, как вы этого хотите.= Вход в Javascript не выполняет операцию равенства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...