我将表单元素返回到ajax的表单中。我可以计算返回的元素数量,但我不知道如何循环它们。我需要能够获得返回的每个元素的值。
我很确定这是一个基本的javascript,我不知道。使用Ajax只会使问题变得更加复杂。
我的代码如下所示:
// The view page
<html>
<head>
<script language="javascript">
function calculateAlphaTotals(){
var length = document.myForm["alpha[]"].length;
alert( length ); // correctly outputs 3
for( var i = 0; i < length; i++ ){
try{
alert( document.myForm["alpha[]"].value ); // HTML ObjectCollection
alert( document.myForm["alpha["+i+"]"].value ); // Object Required
} catch( error ) { }
}
}
</script>
</head>
<body>
<form name="myForm" id="myFormId" method="post">
<div id="ajaxOutputId"></div>
</form>
</body>
</html>
// The Ajax page:
<input name="alpha[]" onchange="calculateAlphaTotals()" />
<input name="alpha[]" onchange="calculateAlphaTotals()" />
<input name="alpha[]" onchange="calculateAlphaTotals()" />
答案 0 :(得分:1)
在正确的位置使用index -[]
运算符:
var x = document.myForm["alpha[]"];
for( var i = 0; i < x.length; i++ ){
var currentValue = x[i].value;
alert(currentValue);
}
你的:document.myForm["alpha["+i+"]"]
更改字符串,而不是迭代集合。
答案 1 :(得分:1)
尝试使用document.myForm["alpha[]"][i].value
代替document.myForm["alpha["+i+"]"].value
所以你的功能将是这样的
function calculateAlphaTotals(){
var length = document.myForm["alpha[]"].length;
alert( length ); // correctly outputs 3
for( var i = 0; i < length; i++ ){
try{
alert( document.myForm["alpha[]"][i].value ); // Object Required
} catch( error ) { }
}
}
答案 2 :(得分:1)
你很亲密,但你需要改变一件事。 document.myForm["alpha[]"]
实际上是一个数组,因此如果您想循环使用它,则需要在最后添加i
索引,如下所示:document.myForm["alpha[]"][i]
答案 3 :(得分:0)
<script language="javascript">
function calculateAlphaTotals(){
var els = document.myForm["alpha[]"];
for(var i = 0, ceiling = els.length; i < ceiling; i++){
alert(document.myForm["alpha[]"][i].value);
}
}
</script>