Javascript函数变量在循环外循环

时间:2016-01-26 13:24:08

标签: javascript

下面是我想要检查的代码,不知道我在这里做错了什么,但变量checkedValue的值在for循环之外不起作用。

如果我从我评论的部分进行测试[即在for循环中],它的工作。

我已经测试了将数组变量声明为[0]以检查它是否至少具有初始值0,但是没有显示任何内容,就好像该变量为空。

<script>
                    var checkedValue = [];
                    function getItemId() 
                    {
                        //var checkedValue = [];
                        var inputElements = document.getElementsByName('pick');
                    for(var i=0; i<=inputElements.length; i++)
                    {
                        if(inputElements[i].checked)
                        {
                            checkedValue.push(inputElements[i].value);   
                        }
                    //document.getElementById("demo").innerHTML = checkedValue;
                    }
                    document.getElementById("demo").innerHTML = checkedValue;
                    }
                </script>

4 个答案:

答案 0 :(得分:0)

变量checkedValue在函数getItemId内声明,但您试图在函数外部访问它。更改变量的范围,您的问题将得到解决。

答案 1 :(得分:0)

这里的问题在于javaScript中的scope变量。

您可以在函数外声明var checkedValue = [];,也可以在声明中省略var,以使其成为全局。

您应该使用第一个变体,这更容易阅读和理解。

答案 2 :(得分:0)

尝试对代码进行一些更改: for(var i=0; i<=inputElements.length; ++i){更改为 for(var i=0; i<inputElements.length; i++){

document.getElementById("demo").innerHTML = checkedValuedocument.getElementById("demo").innerHTML = checkedValue.join(',')

答案 3 :(得分:0)

我不明白为什么它不起作用但你在返回checkedValue时尝试了这个场景吗?

<script>
                    function getItemId() 
                    {
                        var checkedValue = [];
                        var inputElements = document.getElementsByName('pick');
                        for(var i=0; i<=inputElements.length; i++)
                        {
                            if(inputElements[i].checked)
                            {
                                checkedValue.push(inputElements[i].value);   
                            }
                        }
                        return checkedValue;
                    }

                    document.getElementById("demo").innerHTML = getItemId();
</script>