繁体   English   中英

JavaScript函数变量在循环外变为null

[英]Javascript function variable going null outside loop

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

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

我已经测试过将数组变量声明为[0],以检查其是否至少具有初始值0,但未显示任何内容,就像变量为null一样。

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

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

这里的问题在于javaScript中变量的范围

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

但是,您应该使用第一个变体,它更易于阅读和理解。

尝试在代码中进行一些更改: 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(',')

我不明白为什么它不起作用,但是您在返回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>

暂无
暂无

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

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