循环通过一系列表单元素

时间:2012-03-22 19:12:26

标签: javascript

我将表单元素返回到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()" />

4 个答案:

答案 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>