首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

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

2012-02-11 
表单动态添加控件,如果判断与取值?如:动态控件:inputname n1 type text ,页面取值可能出现三种情

表单动态添加控件,如果判断与取值?
如:动态控件:   <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要什么效果,不帖代码.我看了看楼上的好多都可以用的

热点排行