оператор jquery / javascript if else не работает, обнаруживает пустое текстовое поле

#javascript #jquery

#javascript #jquery

Вопрос:

У меня есть этот код:

 if ($('#txtEdit').val == '') {
    window.parent.$('#note'   appid   dbid).html('<img src="images/note_gray.png">');
} else if ($('#txtEdit').val != '') {
    window.parent.$('#note'   appid   dbid).html('<img src="images/note.png">');
};
  

Я также пробовал это с простым «else» вместо «else if». Я также пробовал val (null) вместо val == «. Во всех случаях это будет работать одним способом, но не другим. Например, как сейчас (выше), если я помещу что-то в текстовое поле (txtEdit), для div будет установлено значение note.png. Однако очистка текстового поля не изменит его на note_gray.png.

Я новичок в jquery / javascript. Извините.

Ответ №1:

Ни одно из ваших сравнений не является допустимым. val это функция, которая возвращает строку. Это не свойство.

 if ($('#txtEdit').val() == '') {
    window.parent.$('#note'   appid   dbid).html('<img src="images/note_gray.png">');
} else { // else if unnecessary
    window.parent.$('#note'   appid   dbid).html('<img src="images/note.png">');
};
  

Ответ №2:

Вызовите val()

 if ($('#txtEdit').val() == '') {
  

также, в качестве хорошей практики, используйте скобки в скобках === и !== для проверки равенства или нет.

Комментарии:

1. Кариссимо Альберто, почему === лучше, чем == ? (заранее спасибо!)

2. @roXon — в данном случае это не «лучше» и не «хорошая практика». == является оператором equals, он использует абстрактный алгоритм сравнения равенства для сравнения вычисляемых выражений. Это часто называют правдивым сравнением. === является оператором строгого равенства и использует алгоритм сравнения на строгое равенство, который включает тип сравниваемых выражений, например, 0=='' и 0==false оба являются истинными, но 0==='' и 0===false оба являются ложными. Смотрите раздел ECMAScript 11.9.

3. @RobG: в данном случае это не очень хорошая практика, я говорил в целом.