#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: в данном случае это не очень хорошая практика, я говорил в целом.