Как добавить текст в элемент ввода?

Я пытаюсь добавить текст в элемент ввода с помощью кнопки. До сих пор я пытался изменить .textContent, который действительно изменяет textContent, но это не отображается в поле изображения. Настройка .value не работает.

Мой код:

const buttons = document.querySelectorAll(".row button");
for (let i = 0; i < buttons.length; i++)  {
    buttons[i].addEventListener("click", function() {
        document.querySelector("input").value += buttons[i].value;
    })  
}

Каждое решение, которое я читал в Интернете, просто предлагает изменить .value элемента ввода, что не работает для меня, поэтому я в недоумении.

Обновлено: Спасибо всем, такую ​​глупость упускать из виду.

элемент ввода хорош, но элементы кнопок не могут иметь атрибута значения, поэтому добавить нечего...

Mister Jojo 28.11.2022 03:57

Пожалуйста, предоставьте HTML, который сопровождает это. Желательно как минимально воспроизводимый пример. Какой текст вы хотите добавить?

Jon P 28.11.2022 04:19
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
123
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Изменение свойства value должно работать на вас. Ваша проблема заключается в этом утверждении:

value += buttons[i].value

Кнопки не имеют значения, если вы не укажете его. Доступ к внутреннему тексту кнопки осуществляется с помощью свойств innerHTML или innerText, а не свойства value:

const button = document.querySelector("button");
const input = document.querySelector("input");

button.addEventListener("click", (e) => {
   input.value += button.innerText;
});
<input type = "text" />
<button type = "button">bleh</button>

С кнопками свойство value используется для отправки формы PHP, а не для хранения текстовых данных.

Это не будет работать, если есть несколько кнопок. Не используйте толстые стрелочные функции для слушателей событий

Jon P 28.11.2022 04:24

^ это очень верно, имейте это в виду, ОП. Я просто делал быструю демонстрацию и использовал функцию стрелки; однако на практике их не следует использовать для прослушивателей событий.

human bean 28.11.2022 17:23

Вы пытаетесь установить значение для поля ввода на основе отображаемого текста кнопки?

Если это так, вы можете попытаться заменить кнопки [i].value на кнопки [i].textContent

Вы можете использовать button.innerHTML для назначения входного значения

<!DOCTYPE html>
<html lang = "en">
  <head>
    <meta charset = "UTF-8" />
    <meta name = "viewport" content = "width=device-width, initial-scale=1.0" />
    <meta http-equiv = "X-UA-Compatible" content = "ie=edge" />
    <title>Static Template</title>
  </head>
  <body>
    <input type = "text" value = "" />
    <button>1</button>
    <button>2</button>

    <script>
      const buttons = document.querySelectorAll("button");
      const input = document.querySelector("input");
      buttons.forEach((button) => {
        button.addEventListener("click", function () {
          input.value += button.innerHTML;
        });
      });
    </script>
  </body>
</html>

Другие вопросы по теме