js获取表单中的指定动态变量
问题描述:for循环实现表格每行数据输入,对应每行有提交表单需要做相应处理,我们需要获得该行某列的变量值
要求:表格每一行有一个提交按钮实现前台判断操作(判断表格每行第二列的值namefile是否等于动态设置的值)
实现:通过在提交表单onsubmit="javascript:return checkName()"调用函数checkName()检测,返回false表单不提交,不返回或者返回true提交表单
程序框架如下:
<head>
<script type="text/javascript">
function checkName(){
}
</script>
</head>
<body>
......
<%for(var i = 0, i < 10, ++i)%>
<tr>
<td>
....
</td>
<td>
<form action="file.action" enctype="multipart/form-data" method="post"
onsubmit="javascript:return checkName()">
<input type="hidden" name="subfilename" id="subfilename" value="<%=namefile%>"/>
<input type="submit" name="btn" value="点击" />
</form>
</td>
<td>
....
</td>
.
.
.
</tr>
</body>
js实现方法:
一、采用getElementById() ,该方法难以实现
原因:getElementById()返回拥有指定id的第一个对象的引用,因为我们实现的是for循环多行数据采用同一个变量,该函数只会得到第一行的对象
getElementById()在js中使用:
var name = getElementById("filename").value; //name为得到的对应id的属性值,filename为id名称
二、采用getElementsByName(),该方法难以实现
原因:getElementsByName()返回指定名称对象的集合,为对象数组结构,对应每一行的提交按钮无法确定是第几行,也无法检测是第几个提交按钮
检测方法比较复杂
三、采用函数传值
有的时候不能采用固定思维,只想到利用HTML DOM 方法,利用函数传值很简单,每行的参数变量是变化的,每行传的形参自然是正确的
代码如下:
<head>
<script type="text/javascript">
function checkName(subfilename){
if(subfilename == " ") //引号里自己控制,若动态也可以用此函数传形参过来
{
return true;//可以省略
}
else{
alert("请重新选择");
return false;
}
}
</script>
</head>
<body>
......
<%for(var i = 0, i < 10, ++i)%>
<tr>
<td>
....
</td>
<td>
<form action="file.action" enctype="multipart/form-data" method="post"
onsubmit="javascript:return checkName(subfilename.value)">
<input type="hidden" name="subfilename" id="subfilename" value="<%=namefile%>"/>
......
<input type="submit" name="btn" value="点击" />
</form>
</td>
<td>
....
</td>
.
.
.
</tr>
</body>
测试,此方法简单有效。