我使用对象文字作为我的js,下面你可以看到它是“全局”变量。其中一个是一个对象(theBody),它又包含一个名为“body”的数组。这个数组包含几个对象(下面的例子中只有一个),它们是svg对象。
我希望能够从一个名为bodyColor的特定变量中分配填充值,但是当我改变时:
'fill':'#e59225',
到
'fill': AvGen.theBody.bodyColor,
我收到错误 Uncaught ReferenceError:未定义theBody
为什么这样,我如何为对象属性访问bodyColor?
来自js的:
var AvGen = {
paper: null,
theBody: {
bodies: [
[0,0,277.9,308.5,{
type:'path',
'fill':'#e59225',
'stroke':'none',
'stroke-width':'0',
'fill-opacity':'1',
'stroke-opacity':'0'
}],
],
currNr: 1,
currObj: null,
bodyColor: '#e59225'
},
init: function() {
}
}
答案 0 :(得分:1)
检查这个小提琴DEMO。
我认为您的错误是您在使用它的函数后定义AvGen。 我首先定义了一个js函数,在AvGen之后我和你有相同的错误。
在功能代码解决问题之前移动AvGen块。
AvGen = {
paper: null,
theBody: {
bodies: [
[0,0,277.9,308.5,{
type:'path',
'fill':'#e59225',
'stroke':'none',
'stroke-width':'0',
'fill-opacity':'1',
'stroke-opacity':'0'
}],
],
currNr: 1,
currObj: null,
bodyColor: '#e59225'
},
init: function() {
}
}
$(document).ready(function(){
$('#test').attr('style', 'background-color:' + AvGen.theBody.bodyColor);
});
答案 1 :(得分:1)
你试图在定义之前引用它!您正在尝试使用theBody
,但尚未创建它。你可以这样做:
var AvGen = {
paper: null,
theBody: {
bodies: [
[0,0,277.9,308.5,{
type:'path',
'fill': null,
'stroke':'none',
'stroke-width':'0',
'fill-opacity':'1',
'stroke-opacity':'0'
}],
],
currNr: 1,
currObj: null,
bodyColor: '#e59225'
},
init: function() {
}
}
AvGen.theBody.bodies[0][4].fill = AvGen.theBody.bodyColor;
甚至更好;完全提取bodyColor
:
var bodyColor = "#e59225";
var AvGen = {
paper: null,
theBody: {
bodies: [
[0,0,277.9,308.5,{
type:'path',
'fill': bodyColor,
'stroke':'none',
'stroke-width':'0',
'fill-opacity':'1',
'stroke-opacity':'0'
}],
],
currNr: 1,
currObj: null,
bodyColor: bodyColor
},
init: function() {
}
}