繁体   English   中英

遍历一系列表单元素

[英]Cycling through an array of form elements

我正在将表单元素从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()" />

在正确的位置使用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+"]"]更改字符串,而不是迭代集合。

尝试使用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 ) { }
        }
    }

您已经很接近了,但是您需要更改一件事。 document.myForm["alpha[]"]实际上是一个数组,因此,如果要循环遍历它,则需要像这样在末尾添加i索引: document.myForm["alpha[]"][i]

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM