Как сохранить пользовательский ввод из DOM в переменной Javascript?

Как я могу взять число, введенное пользователем в HTML-форму, и сохранить его как переменную javascript, которую можно использовать во всем документе javascript?

Например, пользователь вводит «8», нажимает клавишу ВВОД, которая затем будет записана как переменная с именем «ввод», которая может использоваться любым последующим javascript:

// How to get input value entered from user?

var triple = input*3

console.info(triple);

Один из способов добиться этого - использовать document.selector и нацелить желаемый ввод и получить от него ценность.

Rikin 16.12.2018 04:52
Поведение ключевого слова "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) для оценки ваших знаний,...
2
1
2 980
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Простой способ добиться того, что вам нужно, - это использовать метод prompt(). Это заставляет браузер отображать простое диалоговое окно ввода, из которого вы можете получить вводимые пользователем данные и сохранить их в переменной input следующим образом:

var input = prompt(); // This causes a input dialog to be display. If the user clicks ok, 
                      // then the result of prompt() is the value entered by the user
var triple = input * 3;

console.info(triple);

Это, конечно, окольный путь к достижению этого ... но я надеялся получить ввод пользователя из html.

Ayma 16.12.2018 04:58

@Ayma, я вижу - вот решение, которое демонстрирует это: stackoverflow.com/a/53799335/8526705

Dacre Denny 16.12.2018 05:03

Ваш вопрос немного сбивает с толку, однако, исходя из моего понимания вашего вопроса -

Если вы хотите прочитать значение, введенное в текст HTML, в коде сценария java используйте ниже -

         <html>
         <body>
         <script language = "javascript" >

          function click_me()
          {
             var x=document.getElementById("numberInput").value;
             alert(x);
           }

        </script>

         Enter a number <input type = "text" id = "numberInput">
         <button onclick = "click_me()">Click me</button>
         </form>
         </body>
         </html>

Извините за это, я постараюсь объяснить более понятно. Если бы пользователь ввел «8» в html-форме. Как мне взять эту цифру 8 и сохранить ее в переменной, которую можно использовать в файле javascript?

Ayma 16.12.2018 04:59

Просто добавьте запрос на создание жулика в верхней части кода JavaScript:

const input = parseInt(prompt("Enter a number: "));

И теперь вы можете делать все, что хотите:

const input = parseInt(prompt("Enter a number: "));
var triple = input * 3;
console.info(triple);

Есть несколько способов получить пользовательский ввод в javascript.

  • Используя prompt(). Подсказка - это функция, которая позволяет вам вызвать диалоговое окно, в котором вы можете вводить текст, числа и т. д. Текст, который вы вводите в качестве аргумента, будет действовать как заголовок всплывающего предупреждения.

Взгляните на приведенный ниже фрагмент для примера:

let input = prompt("Enter a number:"); // Input in string format
let triple = input * 3; // Convert string to integer by using * operation
console.info(triple);
  • Другой способ получить вводимые пользователем данные - использовать элементы ввода HTML. Существует ряд различных типов элементов ввода, которые вы можете использовать, такие как пароль, номер, дата, текст и т. д. Для вашего вопроса вы хотели бы использовать ввод number. Вы можете создать числовой ввод, например, в HTML:
<input type = "number" id = "number" value = "0" />

Здесь атрибут type указывает, что мы будем вводить число в качестве входных данных. Атрибут id дает нам возможность ссылаться на этот элемент ввода в javascript, чтобы впоследствии мы могли получить введенное в него число. А атрибут value - это необязательный атрибут, определяющий значение поля ввода по умолчанию.

При работе с полями ввода вам необходимо указать, когда javascript должен проверять поле ввода для значения. Вы можете сделать это, добавив прослушиватель событий, чтобы ваш javascript запускал часть кода каждый раз, когда пользователь вводит число. Вот пример добавления прослушивателя событий в поле ввода числа, чтобы он запускал то, что число в нем меняет:

document.getElementById('number').addEventListener('keyup', function(e) {/* do code */});

В приведенной выше строке мы ссылаемся на поле ввода через его идентификатор (number) и добавляем к нему приемник событий ввода.

Используя этот прослушиватель событий, мы можем затем использовать ключевое слово this внутри функции для ссылки на само поле ввода. Это позволяет нам сделать this.value, чтобы получить значение введенного числа. Здесь я также использовал e.keyCode, чтобы определить, какая клавиша была нажата. Если keyCode равен 13 (ENTER), тогда код будет регистрировать результат, иначе (иначе) он ничего не сделает.

См. Рабочий пример ниже:

document.getElementById('number').addEventListener('keyup', function(e) {
  if (e.keyCode == 13) { // Check if enter key pressed
      let triple = this.value * 3; // Get value of text box using this.value
      console.info(triple);  
  }
});
<input type = "number" id = "number" value = "0" />

Не беспокойтесь, рад помочь :)

Nick Parsons 16.12.2018 05:55
Ответ принят как подходящий

Чтобы получить ввод через поле ввода HTML, вы можете сделать что-то вроде следующего:

var triple;

document.getElementById('input').addEventListener('keyup', event => {
  
  // When user presses the enter key, then we update triple based on the 
  // current value of the input
  if (event.keyCode === 13) {
    
    triple = parseInt(event.currentTarget.value) * 3;
    console.info(triple)
  }
});
<input id = "input" />

Здесь прослушиватель событий зарегистрирован в элементе input для обнаружения событий keyup. Когда пользователь нажимает клавишу ввода (например, event.keyCode === 13), тогда переменная triple обновляется на основе значения, введенного пользователем в этот ввод.

Спасибо за ответ. Когда нажимаю "ввод", ничего не происходит. Я знаю, что ваш код правильный, поэтому с моей стороны должно быть что-то не так. Однако я скопировал код в точности как есть. Единственная разница в том, что я помещаю <input id = "input" /> в длинный html-файл. В консоли тоже нет ошибок ... Знаете, что я тут делаю не так?

Ayma 16.12.2018 05:26

@Ayma рад, что смог помочь :)

Dacre Denny 16.12.2018 05:30

можно ли поместить console.info (triple) вне document.getElementById, где «input» равен 3, а 9 записывается в консоль? Прямо сейчас он вложен внутрь.

Ayma 16.12.2018 17:50

Да, конечно, но я просто поместил console.info в обработчик событий, чтобы обновленное значение записывалось в консоль при изменении его значения. Вам нужно было что-то другое?

Dacre Denny 16.12.2018 19:47

Неважно, я просто понял, что это не имеет особого значения, потому что в любом случае я могу добавить любой код, который захочу, в «если». Я такой глупый.

Ayma 16.12.2018 20:02

В очередной раз благодарим за помощь!

Ayma 16.12.2018 20:03

Привет, @Ayma, никаких проблем - дайте мне знать, если я могу еще чем-нибудь помочь :)

Dacre Denny 16.12.2018 20:23

Если вы хотите создать глобальную переменную, вы можете сделать это с помощью var. MSDN определяет область действия var как «Область действия переменной, объявленной с помощью var, - это ее текущий контекст выполнения, который является либо включающей функцией, либо глобальным для переменных, объявленных вне любой функции. Если вы повторно объявите переменную JavaScript, она будет не потерять свою ценность ».

Все, что вам нужно сделать, это объявить переменную input вне какой-либо функции или блока объекта. Вот мой JSFiddle

var globalVar = 5; //global variable
var f1 = function() {
	var inpt = document.getElementById('myInput');
  console.info('input value = ' + inpt.value);
  console.info('globalVar value inside f1 = ' + globalVar);
}
f1(); //function call

var f2 = function() {
	globalVar = globalVar + 1;
	console.info('globalVar value inside f2 = ' + globalVar);
}
f2(); //function call
<input value = "10" id = "myInput">

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