0

我为我的 js 使用对象文字,在下面你可以看到它是“全局”变量。其中之一是一个对象(theBody),它又包含一个称为“body”的数组。该数组包含多个对象(以下示例中只有一个),它们是 svg 对象。

我希望能够从名为 bodyColor 的特定变量分配填充值,但是当我更改时:

'fill':'#e59225',

'fill': AvGen.theBody.bodyColor,

我收到错误Uncaught ReferenceError: theBody is not defined

为什么会这样,如何访问 object 属性的 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() {

    }
}
4

2 回答 2

1

检查这个小提琴演示

我认为您的错误是您在使用它的函数之后定义了 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);
});
于 2013-09-11T17:17:36.423 回答
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() {

    }
}
于 2013-09-11T17:42:07.227 回答