Если значение существует, сделайте это. не определено против нуля? - PullRequest
2 голосов
/ 21 марта 2020

Я хочу выполнить определенное действие при нажатии кнопки.

Условие: (Если значение существует в поле ввода, тогда напишите «значение существует». Если значение не существует, то предупреждение).

Я пытался заменить неопределенное на ноль. Я также пытаюсь заменить оператор === и ==. Ни один не работает! Пожалуйста, помогите.

<html>
<head>

</head>
<body>

<input id='typer' type='text'></input>
<button onclick='hey()'>click</button>

<p id='pw'></p>

<script>

var pw
pw = document.querySelector('#pw');

function hey() {
    if (document.getElementById('typer').value !== undefined) {
        pw.innerHTML = 'value exists';
    } else {
        alert('value does not exists');
    }
}

</script>
</body>
</html>

Ответы [ 2 ]

1 голос
/ 21 марта 2020

Для <input type="text"> документация гласит, что тип его свойства .value - DOMString.

DOMString - строка UTF-16 , Поскольку JavaScript уже использует такие строки, DOMString отображается непосредственно в String.

Это означает, что .value никогда не будет null или undefined; с этим знанием, когда вы хотите узнать, присутствует ли значение, вы можете сделать две вещи:

  1. Используйте value.length, чтобы определить, является ли строка пустой
  2. Использовать value или !value непосредственно в операторе if, чтобы определить, присутствует он или пуст соответственно (пустая строка оценивается как false, тогда как непустая строка оценивается как true)
1 голос
/ 21 марта 2020

null, undefined и пустая строка ("") - все значения 'falsey' в JavaScript; это означает, что если вы передадите их в оператор !, результат будет true. Вы можете проверить это в своей консоли, запустив !(""), !(null) или (для undefined), определив var x; и затем вызвав !x.

Более того, if оператор на самом деле не проверяет, равно ли его условие true, он проверяет, является ли условие «истинным» (т. е. оценивается как false при прохождении через !).

Следовательно, все вы необходимо установить условие оператора if равным document.getElementById('typer').value, поскольку до тех пор, пока значение элемента не является нулевым, неопределенным или пустой строкой (или ложью, которая также является ложной), условие это правда.

...