2

我一直在查看有关此错误的其他帖子,但在这种情况下似乎无法弄清楚。我正在尝试保存到 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;

};
4

3 回答 3

7

您无法读取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 }
于 2013-08-21T19:38:44.007 回答
1
document.forms[0].acoustic

不存在,因此未定义。当您将收音机设置为此然后尝试查找长度时,它会失败。

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

于 2013-08-21T19:40:20.430 回答
0

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

于 2019-03-22T12:29:00.667 回答