2012-02-24 162 views
1

我正在爲項目學習Javascript。我試圖嘗試從動態數量的文本輸入中獲取值到多維數組中。我已經用1個文本字段進行了嘗試,並將其正確保存到數組中以便稍後進一步操作。但是,當我向數組添加第二個文本字段和另一個維度時,它打破了。最終,我會列出一個下拉列表,給出一次輸入的數量。這是我目前的代碼,實際上效率不高。在Javascript/HTML中將輸入框值輸入到數組中

<html> 
<head> 
    <title> JavaScript Array from Input</title> 
    <script> 

     var array = new Array(); 

     function insert(val){ 
      array[0][array.length]=val; 
     } 

     function insert2(val){ 
      array[array.length][0]=val; 
     } 

     function show() { 
      var string="<b>All Element of the Array :</b><br>"; 
      for(i = 0; i < array.length; i++) { 
       string =string+array[i][0]+"<br>"; 
       string =string+array[0][i]+"<br>"; 
      } 
      if(array.length > 0) 
       document.getElementById('myDiv').innerHTML = string; 
     } 
    </script> 

</head> 

<body> 
    <h2>JavaScript Array from Input</h2> 
    <form name="form1"> 
     <table width="407"> 
      <tr> 
       <td width="154" align="right"><b>Name</b> 
       <td width="9"><b>&nbsp;:</b> 
       <td width="224"> 
       <input type="integer" name="name"/> 
      </tr> 
      <tr> 
       <td width="154" align="right"> 
       <td width="9"> 
       <td width="224"> 
      </tr> 
      <tr> 
       <td width="154" align="right"> 
       <td width="9"> 
       <td width="224"> 


       <td width="154" align="right"><b>Name2</b> 
       <td width="9"><b>&nbsp;:</b> 
       <td width="224"> 
       <input type="integer" name="name2"/> 
      </tr> 
      <tr> 
       <td width="154" align="right"> 
       <td width="9"> 
       <td width="224"> 
      </tr> 
      <tr> 
       <td width="154" align="right"> 
       <td width="9"> 
       <td width="224"> 
       <input type="button" Value="Add Into Array" 
         onclick="insert(this.form.name.value), insert2(this.form.name2.value);"/> 

             <input type="button" Value="alert" 
         onclick="alert(array[0][0])"/> 
      </tr> 
     </table> 

    </form> 
    <div id="myDiv"></div> 
</body> 

+0

雖然關閉HTML標籤。 – sgowd 2012-02-24 12:47:05

+0

不知道你爲什麼使用二維數組。 – sgowd 2012-02-24 12:58:07

+1

對不起,我已經關閉了,複製代碼時錯過了。 – 2012-02-24 13:01:35

回答

1

如果你沒有想通出來呢這裏是代碼:

<html> 

<script> 
    var arrayX =5; 
    var arrayY =2; 
    var array=new Array(arrayX); 
    var arrayIndex=0; 


    for (x=0; x<array.length; x++) 
    { 
     array [x] = new Array(arrayY);    
    } 

    function insert(val1, val2){ 
    if (arrayIndex >= arrayX) 
    { 
    alert("End of array!"); 
    return false; 
    } 

     array[arrayIndex][0]=val1; 
     array[arrayIndex][1]=val2; 
     arrayIndex++; 
     document.getElementById('name1').value = ''; 
     document.getElementById('name2').value = ''; 
    } 

    function show() { 
     var string='<b>All Element of the Array :</b><br>'; 
     for(i = 0; i < array.length; i++) 
     { 
     string+='array['+i+']:'+array[i][0]+'-'+array[i][1]+'<br>'; 
     } 
     if(array.length > 0) 
     document.getElementById('myDiv').innerHTML = string; 
    } 
</script> 

</head> 
<body> 
    <h2>JavaScript Array from Input</h2> 
    <form name="form1"> 
     <table width="407"> 
      <tr> 
       <td width="154" align="right"><b>Name1</b></td> 
       <td width="9"><b>&nbsp;:</b></td> 
       <td width="224"> 
       <input type="integer" name="name" id="name1"/></td> 
      </tr> 
      <tr> 
       <td width="154" align="right"><b>Name2</b></td> 
       <td width="9"><b>&nbsp;:</b></td> 
       <td width="224"> 
       <input type="integer" name="name2" id="name2"/></td> 
      </tr> 


     </table> 
     <table width="407"> 
     <tr> 
     <td><input type="button" value="Add Into Array" 
         onclick="insert(this.form.name.value,this.form.name2.value);"/> 
</td> 
<td> 
       <input type="button" value="alert" 
         onclick="show();"/> 
</td> 
</table> 
</form> 
<div id="myDiv"></div> 

</body> 
</html> 
0

順便說一句,你要插入 「;」之間的函數調用,而不是 「」

onclick="insert(this.form.name.value); insert2(this.form.name2.value);

0
  1. 您需要關閉所有td元素。
  2. 正如arunes提到的那樣,用';'修改onclick調用。分隔符。
  3. 正如我在評論中提及,靠近html標籤
  4. 不知道爲什麼你正在使用2-d陣列,你要可以用1-d陣列做什麼。

下面是修改後的代碼,只是去通

http://jsfiddle.net/h3r9j/

其更好地使一個單一的功能,插入陣列,而不是2種獨立的功能。

+1

我需要一個二維數組,因爲我將有例如3個名稱,約翰,傑克和詹姆斯,每個數組索引都會代表一個名字,所以[0] [i]將是約翰,[1] [i]將是傑克。每個名字將會有n個值。 – 2012-02-24 13:21:31