Как вызвать текст из текстового поля, чтобы установить переменную в javascript

#javascript

#javascript

Вопрос:

У меня небольшое затруднение. Я пытаюсь запустить переменную в цикле, чтобы она могла изменить цикл. Вот код, который у меня есть в настоящее время.

 <FORM NAME="myform" ACTION="" METHOD="GET">
<INPUT TYPE="text" NAME="inputbox" id="Variable"><P>
</FORM>

<script type="text/javascript">
document.getElementById("Variable").value = i;
var i=5;
for (i=0;i<=5;i  )
{
document.write(" "   i);
document.write("<br />");
}
</script>
  

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

Ответ №1:

Я думаю, вы имеете в виду что-то вроде этого:

 var count = parseInt(document.getElementById("Variable").value, 10);
var i;
for (i = 0; i < count;   i) {
    // ...do something...
}
  

Что это дает:

  1. Ищет элемент по его идентификатору (он у вас уже был): document.getElementById("Variable') .
  2. Извлекает значение его value свойства, которое является строкой.
  3. Преобразует строку в число через parseInt , используя десятичную систему счисления (в отличие от восьмеричной или шестнадцатеричной).
  4. Циклы от нуля (включительно) до этого числа (исключительного).

Обратите внимание, что вы не можете использовать document.write после основного анализа (начальной загрузки) страницы, и вы, вероятно, не хотите использовать значение из поля формы до завершения основного анализа страницы, поэтому вы, вероятно, не будете делать document.write здесь. Вы могли бы задать innerHTML элемента, что-то вроде этого.

Повторите мое «…вы не можете использовать document.write после основного синтаксического анализа …»: Технически вы можете, но вы полностью замените страницу, а не просто добавите к ней.

Re my «… и вы, вероятно, не хотите использовать значение из поля формы перед основным parse…is завершить …»: Однако вы можете, если поле формы находится над скриптом в разметке страницы. Я буквально имел в виду, что вы, вероятно, не хотите этого, предположительно, вы хотите, чтобы пользователь сначала ввел какое-то значение.


Обновление: Вот более полный пример с живой копией для воспроизведения:

 var element, value, count, i;

element = document.getElementById("Variable");
if (!element) {
  display("Element 'Variable' not found.");
}
else {
  value = element.value;
  count = parseInt(value, 10);
  if (isNaN(count)) {
    display("'"   value   "' is not numeric");
  }
  else {
    for (i = 0; i < count;   i) {
        display("Loop "   i);
    }
  }
}

function display(msg) {
  var p = document.createElement('p');
  p.innerHTML = msg;
  document.body.appendChild(p);
}
  

Live copy, display функция, очевидно, является чем-то вроде заполнителя для того, что вы на самом деле хотите сделать.

Ответ №2:

Я не понял вашего точного вопроса. но я думаю, это ваше решение :

 <FORM NAME="myform" ACTION="" METHOD="GET">
<INPUT TYPE="text" NAME="inputbox" id="Variable">
<input type="button" value="run" onclick="renderIt()" />
<P>
</FORM>

<script type="text/javascript">
function renderIt()
{
var max = parseInt(document.getElementById("Variable").value);
for (i=0;i<=max;i  )
{
document.write(" "   i);
document.write("<br />");
}
}
</script>
  

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

1. Это полностью удалит страницу и заменит ее (что может быть, а может и не быть тем, чего они хотели, просто отметив это). (Я также позволил себе крошечное исправление ошибки, просто изменил m на max в предельной части for цикла.)