Я пытаюсь сохранить содержимое ввода в локальное хранилище при нажатии кнопки. Что я делаю не так?

#javascript #html #local-storage

Вопрос:

итак, у меня есть элемент ввода с идентификатором «ответ» и кнопкой. Я добавил прослушиватель событий для кнопки и попытался вызвать функцию, которая сохраняет текст внутри ввода в локальное хранилище. Консоль сообщает мне, что «innerHTML» равен нулю, но я не уверен, что мне следует делать.

 lt;input type="text" id="answer" /gt; lt;button id="button"gt;click melt;/buttongt;      var inputAnswer = document.getElementById("#answer") var buttonEl = document.getElementById("button")  buttonEl.addEventListener("click", saveToStorage())  function saveToStorage() { localStorage.setItem("task", inputAnswer.innerHTML); }  

Ответ №1:

 lt;input type="text" id="answer" /gt; lt;button id="button"gt;click melt;/buttongt;  lt;script type="text/javascript"gt;  var inputAnswer = document.getElementById("answer");  var buttonEl = document.getElementById("button");   buttonEl.addEventListener("click", addAnswerToLocalStorage);   function addAnswerToLocalStorage() {  const value = inputAnswer.value;  localStorage.setItem("answer", value);  } lt;/scriptgt;  

Существует ошибка в получении ссылки на поле ввода. Вместо #ответ document.getElementById("#answer") это должен быть только ответ только. Кроме того, я проверил его на своем локальном компьютере, и он работает нормально.

введите описание изображения здесь

Комментарии:

1. спасибо, я заставил его работать, но мне просто было интересно, почему это «ответ», а не «#ответ»? Я думал, что должен нацелиться на удостоверение личности.

2. @Ted getElementById() ожидает только идентификатор, без ведущего хэштега. Хэштег используется при указании селектора CSS, например querySelector('#answer') .

Ответ №2:

getElementById() ожидает идентификатор, без хэштега. Измените var inputAnswer = document.getElementById("#answer") на var inputAnswer = document.getElementById("answer") (удалите # ).

buttonEl.addEventListener("click", saveToStorage()) saveToStorage() немедленно вызывает функцию, а это не то, что вам нужно. Вместо этого передайте его в качестве ссылки: buttonEl.addEventListener("click", saveToStorage) .

Комментарии:

1. Удалите # из var inputAnswer = document.getElementById("#answer") также