2016-05-18 37 views
0

这可能是一个简单的答案,但我仍然在学习,所以我在这里。我有一个可以在下面看到的物体阴影。我也有一个html值元素,我试图分割值并将其放入我的对象。简单地将分割变量添加到对象中?

然而,它试图添加到shade.color.fill不退出我需要它添加到shade.color.cord代替。

value="type|Color" 

的Javascript

var obj = { 
    color: { 
     Type: null 
    } 
} 

var fill = this.getAttribute('value').split("|"); 
shade.color.fill[0] = fill[1]; 
console.log(obj.type.color); 

错误:

TypeError: obj.type.fill is undefined 
+0

'fi ll [0] = cord'因此你的值将赋值给'shade.color.cord',你正在访问'shade.color.fill',它会给你'undefined'作为错误 – Apb

+0

@Apb你是正确的,但是我是试图将fill [1]值添加到对象shade.color.cord和cord应该是fill [0]的值。 – Elevant

+0

是的。那么问题是什么? – Apb

回答

2

如果你需要做什么,我认为你需要做的,这应该工作(使用方括号,而不是为点记号以动态设置名称):

var shade = { 
    color: { 
     cord: null 
    } 
} 

var fill = this.getAttribute('value').split("|"); 
shade.color[fill[0]] = fill[1]; 
console.log(shade.color.cord); 
+0

完美的感谢广场与点符号之间的区别是什么? – Elevant

+0

@Elevant方括号表示法接受字符串值作为键,而点表示法明确接受名称。由于您是从字符串值设置名称,所以您需要方括号。 –