我想以动态生成输入文本的形式获取客户的电话号码。我做了这个
<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"> </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>