2011-04-26 45 views
0

我有一点困难。我试图在一个循环上运行一个变量,以便它可以改变循环。这是我目前的代码。如何从文本框中调用文本来设置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> 

我想从窗体中调用文本框中的文本以定义var i。我还想指出,我不是HTML的主人,如果你看到我完成了这一切都错了,请随时告诉我,这是不可能的。

回答

4

我想你的意思是这样的:

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

,做什么:

  1. 通过ID查找该元素(你已经有这样的):document.getElementById("Variable')
  2. 检索其属性value的值,该属性是一个字符串。
  3. 通过parseInt将字符串转换为数字,使用十进制(而不是八进制或十六进制)。
  4. 从零(包括)到该数字(不包括)的循环。

请注意,您无法在这个网页的主要解析(初始加载)后使用document.write,你可能不想前使用从表单字段值的页面的主要解析是完整的,所以你可能不会在这里做document.write。你可以设置一个元素的innerHTML,就像那样。

回复我“......你不能用document.write主要解析后...”:从技术上讲,你可以,但你会完全取代页面,而不是仅仅增加了它。

回复我“......你可能不希望前使用从表单字段价值的主要解析...完成...”:你可以,不过,只要因为表单字段位于页面标记中的脚本之上。我确实意味着你可能不想想要,大概你想让用户先输入一些值。


更新:下面是一个更完整的例子,用活副本玩法:

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功能显然是有点占位不管它是你真正想做。

0

我不明白你的确切问题。但我想这是你的解决方案:

<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> 
+0

这将拆除整个页面并将其替换(可能或可能不是他们想要的,只是标记它)。 (我也冒着* tiny * bugfix的自由,只是在'for'循环的极限部分将'm'改为'max'。) – 2011-04-26 12:53:58

相关问题