#javascript #html #dom
#javascript #HTML #dom
Вопрос:
этот код не работает, но я не понимаю почему.
HTML:
<button id="button">add item</button>
<input type="text" id="text" />
JavaScript:
let text = document.querySelector('#text').value;
let button = document.querySelector('#button');
button.addEventListener('click', ()=>{
alert(text)
})
Когда я щелкнул, ‘alert’ пуст — без текста, который я написал.
Комментарии:
1. Вам нужно получить значение в функции
alert(text.value)
и определить элемент только в началеlet text = document.querySelector('#text')
. Таким образом, он принимает значениеclick
каждый раз.2. Вам нужно получить значение внутри прослушивателя событий click, чтобы получить то, что оно есть в данный момент. Не то, что было при загрузке страницы.
Ответ №1:
Это потому, что вы немедленно объявляете значение text, даже не изменяя его. Как только страница загружается, она мгновенно принимает значение ввода с id =»text», что было бы равно пустой строке, поскольку у вас изначально не было времени что-либо вводить в нее. Если вы установите для атрибута ‘value’ ввода значение ‘5’, например, предупреждение всегда будет предупреждать ‘5’.
Чтобы всегда получать текущее значение в ‘#text’, вам нужно будет установить значение ‘text’ внутри прослушивателя событий. Итак, что-то вроде этого:
<body>
<button id="button">add item</button>
<input type="text" id="text" />
<script>
let button = document.querySelector('#button');
button.addEventListener('click', ()=>{
let text = document.querySelector('#text').value;
alert(text);
});
</script>
</body>
Теперь он должен предупреждать обо всем, что вы вводите внутри ввода. У меня тоже нет опыта в программировании, но я надеюсь, что это поможет.