#javascript #jquery
#javascript #jquery
Вопрос:
Я присваиваю переменной javascript значение как
var newline = $("#newline").val();
$("#newline").val()
Может существовать, а может и не существовать (в некоторых случаях #newline
может не существовать в DOM, или даже если оно существует, оно может не иметь никакого значения).
Я хочу проверить, var newline
установлено или нет. Как мне это сделать?
Ответ №1:
Это сводится к тому, «Что возвращает метод jQuery val
, если в DOM нет элементов, соответствующих селектору?»
Ответ на это undefined
такой:
if ( typeof newline === "undefined" ) {
}
Комментарии:
1. Это вернет пустую строку, хотя, когда селектор действительно соответствует некоторым элементам, но первый сопоставленный элемент не имеет
value
атрибута. Начиная с jQuery 1.6, вы можете использовать,$('...').prop('value')
если хотите провести различие между пустым значением и отсутствием значения вообще ( prop всегда возвращает undefined, если нет атрибута value).
Ответ №2:
jQuery:
(function() {
if (this amp;amp; this[0] amp;amp; this[0].value) {
// Has a value
} else {
// Has no value
}
}).call($("#newline"));
this[0]
это сам HTML-элемент, а не объект jQuery.
Чистый JavaScript:
(function() {
if (this amp;amp; this.value) {
// Has a value
} else {
// Has no value
}
}).call(document.getElementById("newline"));
Комментарии:
1. Если нет элемента с таким идентификатором, то вы будете пытаться получить доступ к правильно принадлежащей неопределенной переменной, что приведет к ошибке и завершению работы скрипта.