【发布时间】:2013-03-01 12:21:24
【问题描述】:
我在 for 循环中设置数据对象的值时遇到问题。
// data object
var data = {
title: '',
x: {
something: 'test',
someVar: ''
},
y : {
something: '',
someVar: ''
},
dots: []
}
例如,我想设置(或更新)data.x.something = "tested";我可以 console.log 并查看经过测试的更新值。但是,在我的 for 循环中,它会产生一个错误:
for(var i = 0, len = data.length; i < len; i++) {
data.x.something = "x";
console.log('data.x.something', data.x.something);
// log says "Uncaught TypeError: Cannot set property 'something' of undefined". How come I can't set the var inside my for loop?
}
有什么建议吗?谢谢。
【问题讨论】:
-
两件事:您的
data对象显然没有公开length属性,并且您使用未加引号的保留字 (else) 作为属性名称,这是语法错误. -
TypeError 非常具有描述性:
data.x是undefined,您必须在为其分配属性之前将其设置为对象 -
调试时,你的for循环中'x'的值是多少?看起来它是未定义的
-
@DavidL data.x 未定义。
-
@chatu 为什么不发布更多代码?从这里有限的样本中很难判断发生了什么。
标签: javascript