处理在 JavaScript 中动态生成的输入文本数组


Dealing with an array of input text dynamically generated in JavaScript

我想以动态生成输入文本的形式获取客户的电话号码。我做了这个

<HTML>
<HEAD>
<TITLE> get telephones </TITLE>
<SCRIPT language="javascript">
function add(type) {
//Create an input text dynamically.
    if(typeof add.counter=='undefined')
    {
        add.counter=0;
    }
    add.counter++;
    var element = document.createElement("input");
    //Assign different attributes to the element.
    element.setAttribute("type", type);
    element.setAttribute("value", "");
    element.setAttribute("name", type.concat(add.counter));
    var foo = document.getElementById("fooBar");
    //Append the element in page (in span).
    foo.appendChild(element);
    return add.counter;
  }
</SCRIPT>
</HEAD>
<BODY>
<FORM action="test1.php" method="post">
 //here I think there is a problem
<INPUT type="button" value="Add" onclick="<?php echo "add('text')";?>"/>
<INPUT type="submit" value="Add" />
<span id="fooBar">&nbsp;</span>
</FORM>
</BODY>
</HTML>

我想获取输入文本名称的数组,或计数器的最后一个值

如果你将输入名称设置为"whatever[]",那么PHP将自动从输入数据创建数组,所以你在这里需要的只是改变

element.setAttribute("name", type.concat(add.counter));
// to
element.setAttribute("name", "thename[]");

而且你真的不想重用元素类型作为它的名字 - 这是两件非常不同的事情,想出更好的东西

并丢弃所有计数器的东西

这里回答

  <INPUT type="button" value="Add" onclick="add('text')"/>
 <INPUT type="button" value="allPhoneNumbers" onclick="allPhoneNumbers()"/>
<script type="javascript">
  function add(type) 
  {
  if(typeof add.counter=='undefined')
 {
    add.counter=0;
 }
 add.counter++;
 var element = document.createElement("input");
 //Assign different attributes to the element.
 element.setAttribute("type", type);
 element.setAttribute("value", "");
 element.setAttribute("id", type.concat(add.counter));
 element.setAttribute("name", 'phonenumbers[]');
 var foo = document.getElementById("fooBar");
 //Append the element in page (in span).
 foo.appendChild(element);
 return add.counter;
}
 function allPhoneNumbers()
 {
var phonenumbers=document.getElementsByName('phonenumbers[]');
    for(var i=0;i<phonenumbers.length;i++)
    {
        alert(phonenumbers[i].value);
    }     }
</script>