我的问题是:如何在表单中引用输入元素的动态“名称”?
例如,使用以下HTML:
<form>
<input type="text" name="qty1" value="input1" />
<input type="text" name="qty2" value="input2" />
<input type="text" name="qty3" value="input3" />
<input type="submit" value="Submit" onClick="checkVal(this.form); return false;" />
</form>
Javascript:
function checkVal(form) {
for (var i = 1; i <= 3; i++) {
alert(form.qty+i.value); // Here's where my problem is..
}
}
上面的javascript不起作用。警报输出NaN
。
如何使用qty1
变量在for循环中引用qty2
,qty3
和i
?
这是一个jsfiddle:http://jsfiddle.net/MRzWf/
答案 0 :(得分:7)
答案 1 :(得分:3)
答案 2 :(得分:1)
标准解决方案
使用:form.elements[]
应该可以在所有浏览器中使用..
function checkVal(form) {
for (var i = 1; i <= 3; i++) {
alert(form.elements["qty"+i].value);
/* OR using dynamic name variable
var ename = "qty"+i;
alert(form.elements[ename].value);
*/
}
}
答案 3 :(得分:0)
问题是form.qty+i
,
要访问数组元素,您应该在括号内使用index
。
还有另一种检查输入值的方法。这是一个。
function checkVal(form) {
var allInputs = document.getElementsByTagName('input');
for (var i = 0; i < 3; i++) {
if(allInputs[i].type == 'text'){
alert(allInputs[i].value);
}
}
}
答案 4 :(得分:0)
试试这个。它适用于上述问题
function checkVal(form) {
for (var i = 0; i < 3; i++) {
alert(document.getElementsByTagName("input")[i].value);
} }