2011-04-26 25 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

相關問題