2017-02-03 1 views
1

я скорее всего не хватает что-то очень очевидное здесь, но у меня есть 2 значения, мне нужно, чтобы проверитьJQuery не равна условиях не работает

if(data['width'] != 2000 || data['width'] != 750){ 
    $('.image-warning').show(); 
} 

Я хочу, чтобы показать предупреждение изображения, если возвращаемое значение не 2000 или 750 но, кажется, все время показывает.

ответ

9

Ваша логика ошибочна. Вы не можете использовать отрицательную проверку, например, с условием or, потому что, если одна сторона не удастся, другая попадет, поэтому условие всегда истинно. Вы должны использовать логическое условие and вместо:

if (data['width'] != 2000 && data['width'] != 750){ 
    $('.image-warning').show(); 
} 
+0

Ahh сделал трюк, только что принятый && означал бы, что ему нужно будет соответствовать обоим требованиям не один или другой, но, похоже, сработало lol спасибо mate – James

+2

То, что это значит: например. 600 не 2000 ** и ** это не 750, поэтому условие истинно, и вызывается 'show()'. Аналогично, 750 не 2000, а * - * 750, поэтому условие терпит неудачу. –

3

Я согласен с и upvoted ответ Рори McCrossan в. Он заслуживает «правильной проверки ответа». Тем не менее, я хотел бы предложить сделать следующее:

if (!(data['width'] == 2000 || data['width'] == 750)){ 
    $('.image-warning').show(); 
} 

Псевдо:

if (is not (2000 or 700)){ 
    show 
} 

Это то же самое! Но почему? Дело в том, чтобы избежать конфликта с двойной логикой. Обсуждается, что это не имеет значения, но это так. Логика, которую я опубликовал, - это точный перевод того, что спросил ОП. the returned value is not 2000 or 750. Когда логика переведена на обычные разговорные термины, она становится легче и позволяет избежать путаницы. Давайте рассмотрим это, Если это не так, почему ОП застрял в нем?

Смежные вопросы