下面是我想要检查的代码,不知道我在这里做错了什么,但变量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>
答案 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 = checkedValue
到document.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>