#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...
}
Что это дает:
- Ищет элемент по его идентификатору (он у вас уже был):
document.getElementById("Variable')
. - Извлекает значение его
value
свойства, которое является строкой. - Преобразует строку в число через
parseInt
, используя десятичную систему счисления (в отличие от восьмеричной или шестнадцатеричной). - Циклы от нуля (включительно) до этого числа (исключительного).
Обратите внимание, что вы не можете использовать 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
цикла.)