2012-02-24 198 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