js获取表单中的指定动态变量



问题描述:for循环实现表格每行数据输入,对应每行有提交表单需要做相应处理,我们需要获得该行某列的变量值


要求:表格每一行有一个提交按钮实现前台判断操作(判断表格每行第二列的值namefile是否等于动态设置的值)


实现:通过在提交表单onsubmit="javascript:returncheckName()"调用函数checkName()检测,返回false表单不提交,不返回或者返回true提交表单


程序框架如下:

<head>

<scripttype="text/javascript">

functioncheckName(){



}

</script>

</head>


<body>

......

<%for(vari=0,i<10,++i)%>

<tr>

<td>

....

</td>

<td>

<formaction="file.action"enctype="multipart/form-data"method="post"

onsubmit="javascript:returncheckName()">

<inputtype="hidden"name="subfilename"id="subfilename"value="<%=namefile%>"/>


<inputtype="submit"name="btn"value="点击"/>

</form>

</td>

<td>

....

</td>

.

.

.

</tr>

</body>



js实现方法:

一、采用getElementById(),该方法难以实现

原因:getElementById()返回拥有指定id的第一个对象的引用,因为我们实现的是for循环多行数据采用同一个变量,该函数只会得到第一行的对象


getElementById()在js中使用:

varname=getElementById("filename").value;//name为得到的对应id的属性值,filename为id名称


二、采用getElementsByName(),该方法难以实现

原因:getElementsByName()返回指定名称对象的集合,为对象数组结构,对应每一行的提交按钮无法确定是第几行,也无法检测是第几个提交按钮

检测方法比较复杂


三、采用函数传值

有的时候不能采用固定思维,只想到利用HTMLDOM方法,利用函数传值很简单,每行的参数变量是变化的,每行传的形参自然是正确的


代码如下:

<head>

<scripttype="text/javascript">

functioncheckName(subfilename){

if(subfilename=="")//引号里自己控制,若动态也可以用此函数传形参过来

{

returntrue;//可以省略

}

else{

alert("请重新选择");

returnfalse;

}

}

</script>

</head>


<body>

......

<%for(vari=0,i<10,++i)%>

<tr>

<td>

....

</td>

<td>

<formaction="file.action"enctype="multipart/form-data"method="post"

onsubmit="javascript:returncheckName(subfilename.value)">

<inputtype="hidden"name="subfilename"id="subfilename"value="<%=namefile%>"/>

......

<inputtype="submit"name="btn"value="点击"/>

</form>

</td>

<td>

....

</td>

.

.

.

</tr>

</body>


测试,此方法简单有效。