读书人

表单动态添加控件如果判断与取值?该

发布时间: 2012-02-11 09:51:35 作者: rapoo

表单动态添加控件,如果判断与取值?
如:动态控件: <input name= "n1 " type= "text "> , 页面取值可能出现三种情况;
1、控件 n1 没有,因为没有添加;
2、控件 n1 只添加1次; 不是数组;
3、控件 n1t添加多次; 数组;

现在有如下问题:

当有控件 n1 添加一次,或多次时, 我如何 取得第一个值 n1控件的值啊?
当然我知道,如果就添加一个当然是: n1.value; 添加多个就是 n1[i].value;
但我并不知道,我取得时候是1个还是多个啊?
用了 n1.length , 但是 当我的控件是 select 时, n1.length 取道的是 下拉列表的 下拉记录数, 而不是控件数组的个数;

请问我如何取得动态控件的值?
请高手帮忙!

[解决办法]
当有控件 n1 添加一次,或多次时, 我如何 取得第一个值 n1控件的值啊?
---
document.all( "n1 ").value

多个
-----
for(var i=0;i <document.all( "n1 ").length;i++)
{
alert(document.all( "n1 ")[i].value);
}
[解决办法]
var arr=document.getElementsByName( "n1 ");
alert(arr.length);//没有添加为0,n个为n
var obj=arr[i].value;//取到第i+1 个的控件的value

[解决办法]
只有一个的时候
---
if(!document.all( "n1 "))
{
alert(不存在n1控件);
}
else
{
alert(document.all( "n1 ").value);
}

多个
--------
if(document.all( "n1 ").length != undefined)
{
alert(document.all( "n1 ")[0].value)
}
[解决办法]
如果想动态取控件ID的话可以这样
var i=0;
动态设定控件ID
id= 'BtnDel "+(i)+ " '
i++
[解决办法]
to lz:
在下测过才回的帖,IE通过:

<html>
<head>
<meta http-equiv= "Content-Type " content= "text/html; charset=gb2312 ">
<title> new page </title>
</head>
<body>
<select name=n1>
<option value=1> 1 </option>
<option value=2> 2 </option>
<option value=3> 3 </option>
<option value=4> 4 </option>
<option value=5> 5 </option>
</select>
<input type=text name=n1 value= "test ">
</body>
<script language= "javascript ">
var arr=document.getElementsByName( "n1 ");
alert( "共 "+arr.length+ "个! ");//没有添加为0,n个为n
for(var i=0;i <arr.length;i++){
alert( "第 "+(i+1)+ "个: "+arr[i].tagName+ ".value===> "+arr[i].value);//取到第i+1 个的控件的value
}
</script>
</html>

[解决办法]
<html>
<head>

<script language=javascript>

function a() {
var o=document.all.n1;
alert( "有 "+o.length+ " 个select ");
for(var i=0;i <o.length;i++){
alert( "第 "+i+ " 个select的值为 "+o[i].value);
}
}
</script>
</head>
<body onload= "a(); ">
<select name=n1>
<option value=1 selected> 1 </option>
<option value=2 > 2 </option>
<option value=3> 3 </option>
<option value=4> 4 </option>
<option value=5> 5 </option>
</select>



<select name=n1>
<option value=1> 1 </option>
<option value=2 selected> 2 </option>
<option value=3> 3 </option>
<option value=4> 4 </option>
<option value=5> 5 </option>
</select>

<select name=n1>
<option value=1> 1 </option>
<option value=2> 2 </option>
<option value=3 selected> 3 </option>
<option value=4> 4 </option>
<option value=5> 5 </option>
</select>

<select name=n1>
<option value=1> 1 </option>
<option value=2> 2 </option>
<option value=3> 3 </option>
<option value=4 selected> 4 </option>
<option value=5> 5 </option>
</select>

</body>
</html>
[解决办法]
<html>
<head>

<script language=javascript>

function a() {
var o=document.getElementsByName( "n1 ");
alert( "有 "+o.length+ " 个element Name 是N1 ");

for(var i=0;i <o.length;i++){
alert( "第 "+(i+1)+ " 个element的值为 "+o[i].value);
}
}
</script>
</head>
<body onload= "a(); ">
<select name=n1>
<option value=1 selected> 1 </option>
<option value=2 > 2 </option>
<option value=3> 3 </option>
<option value=4> 4 </option>
<option value=5> 5 </option>
</select>

<select name=n1>
<option value=1> 1 </option>
<option value=2 selected> 2 </option>
<option value=3> 3 </option>
<option value=4> 4 </option>
<option value=5> 5 </option>
</select>

<select name=n1>
<option value=1> 1 </option>
<option value=2> 2 </option>
<option value=3 selected> 3 </option>
<option value=4> 4 </option>
<option value=5> 5 </option>
</select>

<select name=n1>
<option value=1> 1 </option>
<option value=2> 2 </option>
<option value=3> 3 </option>
<option value=4 selected> 4 </option>
<option value=5> 5 </option>
</select>

<input type=text name= "n1 " value= "abc ">
</body>
</html>
[解决办法]
数组有个length属性,当他是一个时不是数组,所以只要判断.length==null就可以知道是否只有一个还是一组
[解决办法]
if(formName.formElement.value != null)
{
//执行为一个的代码;
}
else
{

var length = formName.formElement.length;
for (var i=0; i <length; i++)
{
//用循环执行多个的代码
}
}

楼主可以这样判断
[解决办法]
说了半天LZ也没把问题说清楚
[解决办法]
那你是怎解的?我也碰到似的
[解决办法]
不明白lz要什么效果,不帖代码.我看了看楼上的好多都可以用的

读书人网 >JavaScript

热点推荐