#javascript #html
Вопрос:
Я пытаюсь захватить введенное пользователем значение из текстового поля ввода HTML. Если мне присвоено заданное статическое значение, оно позволяет мне отображать это значение, но это не то, что я хочу. Я хочу, чтобы пользователь ввел числовое значение и мог отображать/изменять это значение. Спасибо, что уделили мне время.
<div class="stats">
<label>
Weight<input type="number" id="weight">
<label>
</div>
<script>
/**
* @type HTMLInputElement
*/
let weight = document.getElementById('weight').value;
console.log(weight/2.205);
</script>
Ответ №1:
Сценарий в этом теге сценария выполняется немедленно, один раз. При инициализации страницы входные данные пусты, и, следовательно, нет никакого значения.
Обычно у вас есть кнопка, которую пользователь нажимает после ввода чего-то, что запускает функцию с этой логикой:
<div class="stats">
<label>
Weight<input type="number" id="weight">
<label>
<input type="button" value="press" onclick="update()">
</div>
<script>
function update() {
/**
* @type HTMLInputElement
*/
let weight = document.getElementById('weight').value;
console.log(weight/2.205);
}
</script>
Вам также может понадобиться консоль.журнал должен выполняться каждый раз при обновлении значения, и в этом случае вы можете использовать onchange
атрибут непосредственно на входе, а не иметь отдельную кнопку с onclick
<div class="stats">
<label>
Weight<input type="number" id="weight" onchange="update()">
<label>
<input type="button" value="press">
</div>
<script>
function update() {
/**
* @type HTMLInputElement
*/
let weight = document.getElementById('weight').value;
console.log(weight/2.205);
}
</script>
Комментарии:
1. Этот ответ должен быть общепринятым, и особенно следует использовать вторую часть
Ответ №2:
Это приведет к получению значения при вводе пользователем:
<div class="stats">
<label>
Weight<input type="number" onInput="getWeight()" id="weight">
<label>
</div>
<script>
function getWeight() {
let weight = document.getElementById('weight').value;
console.log(weight/2.205);
}
</script>
Ответ №3:
Что вам нужно, так это прослушиватель событий, который прослушивает изменения входных значений в теге ввода веса.
Вам нужно будет использовать element.addEventListener
метод, чтобы вы могли запускать свой код каждый раз, когда происходит событие ввода.
element.addEventListener
метод принимает:
- тип события (на этот раз входное событие)
- функция обратного вызова (сюда входит ваш исходный код)
- другие варианты (проверьте MDN для получения дополнительной информации)
Внутри тега сценария вы можете зарегистрировать прослушиватель событий следующим образом:
let weightInput = document.getElementById('weight');
weightInput.addEventListener('input', function() {
/* code here runs every time the input event is triggered */
console.log(weightInput.value/2.205);
});