无法读取未定义的属性“长度”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法读取未定义的属性“长度”相关的知识,希望对你有一定的参考价值。

我一直在看这个错误的其他帖子,但在这种情况下似乎无法弄明白。我正在尝试保存到localstorage,但是我得到了这个错误,它说“radio”变量是未定义的,但它似乎不是。我也在使用JQMobile。这是小提琴:http://jsfiddle.net/KpbLD/第28行似乎是问题所在。

这是功能:

var getSelectedRadio = function(){
        var radios = document.forms[0].acoustic;
        for(var i=0, j=radios.length; i<j; i++){
            if(radios[i].checked) {
            console.log(acousticValue);
                acousticValue = radios[i].value;

            }
        }
        return acousticValue;

};
答案

你无法读取undefined的属性。它通常没有属性(参见http://javascriptweblog.wordpress.com/2010/08/16/understanding-undefined-and-preventing-referenceerrors/)。

所以,在你尝试阅读它的length之前,请确保它没有未定义。或者它有一个length,就像

if (obj.length) { your code }

这假设obj不是undefined。如果你也不确定,那么:

if (obj && obj.length) { your code }
另一答案
document.forms[0].acoustic

不存在因此未定义。当您将无线电设置为该设备然后尝试查找长度时,它将失败。

您可能需要查找不同的对象,或者至少在尝试迭代之前检查对象是否存在。

另一答案

请检查typeof variable(radios)。这似乎是对象。如果它是一个数组,则不会出现此错误。

以上是关于无法读取未定义的属性“长度”的主要内容,如果未能解决你的问题,请参考以下文章

在 vue.js 中查找数组长度时无法读取未定义的属性“长度”

无法读取主干中未定义的属性“长度”

TypeError:无法读取reactjs中未定义的属性“长度”

Three.js ColladaLoader“无法读取未定义的属性'长度'”

如何修复此错误:未捕获(承诺)类型错误:无法读取未定义的属性(读取“长度”)

未捕获(承诺)TypeError:无法读取未定义的属性“长度”