Jquery 动态创建变量的问题

Jquery 动态创建变量的问题,jquery,click,dynamically-generated,Jquery,Click,Dynamically Generated,我试图在下面的按钮事件中动态访问不同的全局变量(AvGen.svg1、AvGen.svg2等),但由于某种原因,即使变量“svg”与将AvGen.svg1直接放入“add”方法相同(例如AvGen.svg1),它也无法工作 为什么它不起作用 AvGen = { currSvg: 0, svg1: null, svg1: null, init: function() { AvGen.loadSVG(); AvGen.toolBox

我试图在下面的按钮事件中动态访问不同的全局变量(AvGen.svg1、AvGen.svg2等),但由于某种原因,即使变量“svg”与将AvGen.svg1直接放入“add”方法相同(例如AvGen.svg1),它也无法工作

为什么它不起作用

AvGen = {

    currSvg: 0,
    svg1: null,
    svg1: null,

    init: function() {
        AvGen.loadSVG();
        AvGen.toolBox();
    },

    loadSVG: function() {
        AvGen.svg1 = [0,0,255.3,298.5,{type:'path',path:'M 35.3 257.2 C 34.4 245.7 45.4 234.1 48.5 223 C 53.6 204.3 55 185 60 166.2 C 69.5 131 69.6 97.1 89.1 65.1 C 103.4 41.7 129.5 5.3 161.3 19.7 C 184.6 30.3 181.3 59.2 188.9 78.9 C 207.5 127.3 228.6 184.8 230.3 237.3 C 231.3 268.6 202.8 261.3 178.2 264 C 149.2 267.1 120 269.6 91 272.2 C 84.2 272.8 75.8 274.2 69 273 C 60.9 271.6 28.9 259.9 31.3 249.2','fill':'#39b54a','stroke':'none','stroke-width':'0','fill-opacity':'1','stroke-opacity':'0'}];
        AvGen.svg2 = [0,0,278.9,314.1,{type:'path',path:'M 32 265 C 31.8 245.2 38 226.9 39.8 207.3 C 41.9 184.4 42 161.7 42 138.7 C 42 121.8 36.5 96.1 45.2 81.3 C 51.3 70.9 50.4 75.9 58 79.2 C 67.5 83.4 70.7 82.8 80.4 79 C 114.7 65.7 149.9 35.5 188.7 41.1 C 211.7 44.5 221.2 57.5 226.2 79.1 C 228.8 90.1 230.1 101.6 231.8 112.9 C 234.7 132.3 233.3 154.3 238.8 173 C 246.5 199.5 258.6 237.3 252 265.8 C 248.9 279.6 231.6 278.3 219.1 279.8 C 191.1 283 164 287 135.8 287 C 109.3 287 75.5 292.8 50 285.3 C 38.6 281.9 31.7 275.2 33 263','fill':'#8dc63f','stroke':'#8dc63f','stroke-miterlimit':'10','stroke-width':'0','fill-opacity':'1','stroke-opacity':'0'}];
        AvGen.paper = Raphael("avatarBox",300,300);
    },

    toolBox: function() {
       var moveRightBtn = $('#moveRightBtn');

        moveRightBtn.on('click', function(){
            AvGen.paper.clear();
            AvGen.currSvg += 1;

            var svg = 'AvGen.svg' + AvGen.currSvg;
            console.log(svg); // <--- AvGen.svg1
            AvGen.paper.add(svg);
            // AvGen.paper.add(AvGen.svg1); <--- works
        });
    },
};
AvGen={
当前版本:0,
svg1:null,
svg1:null,
init:function(){
loadSVG();
AvGen.toolBox();
},
loadSVG:function(){
AvGen.svg1=[0,0255.3298.5,个人资料(1 48.5 5 5 223C 53.6 6 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 9.3 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 185 6 6 6 6 6 6 6 6 6 9 9 9 9 9 9 9 9 9 9.5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 C 60.9 271.6 28.9259.9 31.3 249.2',“填充”:“笔划”:“无”,“笔划宽度”:“0',“填充不透明度”:“1',“笔划不透明度”:“0'”;
AvGen.svg2=[0,0278.9314.1,个人资料{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{41414141四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四四258.5 258.6 237.3 252 265.8 C 248.9 279.6 231.6 278.3 219.1 279.8 C 191.1 283 164 287 135.8 287 C 109.3 287 75.5 292.8 50 285.3 C 38.6 281.9 31.7 275.2 33 263',“填充”:“8dc63f',“笔划”:“8dc63f',“笔划-斜接限制”:“10',“笔划宽度”:“0',“填充-不透明度”:“笔划-不透明度”:“1',“笔划-不透明度”;
AvGen.paper=Raphael(“阿凡达”,300300);
},
工具箱:函数(){
var moveRightBtn=$(“#moveRightBtn”);
moveRightBtn.on('单击',函数()){
AvGen.paper.clear();
AvGen.currSvg+=1;
var svg='AvGen.svg'+AvGen.currSvg;
console.log(svg);//尝试以下操作:

AvGen = {

    currSvg: 0,
    svg: [],

    init: function() {
        AvGen.loadSVG();
        AvGen.toolBox();
    },

    loadSVG: function() {
        AvGen.svg.push([0,0,255.3,298.5,{type:'path',path:'M 35.3 257.2 C 34.4 245.7 45.4 234.1 48.5 223 C 53.6 204.3 55 185 60 166.2 C 69.5 131 69.6 97.1 89.1 65.1 C 103.4 41.7 129.5 5.3 161.3 19.7 C 184.6 30.3 181.3 59.2 188.9 78.9 C 207.5 127.3 228.6 184.8 230.3 237.3 C 231.3 268.6 202.8 261.3 178.2 264 C 149.2 267.1 120 269.6 91 272.2 C 84.2 272.8 75.8 274.2 69 273 C 60.9 271.6 28.9 259.9 31.3 249.2','fill':'#39b54a','stroke':'none','stroke-width':'0','fill-opacity':'1','stroke-opacity':'0'}]);
        AvGen.svg.push([0,0,278.9,314.1,{type:'path',path:'M 32 265 C 31.8 245.2 38 226.9 39.8 207.3 C 41.9 184.4 42 161.7 42 138.7 C 42 121.8 36.5 96.1 45.2 81.3 C 51.3 70.9 50.4 75.9 58 79.2 C 67.5 83.4 70.7 82.8 80.4 79 C 114.7 65.7 149.9 35.5 188.7 41.1 C 211.7 44.5 221.2 57.5 226.2 79.1 C 228.8 90.1 230.1 101.6 231.8 112.9 C 234.7 132.3 233.3 154.3 238.8 173 C 246.5 199.5 258.6 237.3 252 265.8 C 248.9 279.6 231.6 278.3 219.1 279.8 C 191.1 283 164 287 135.8 287 C 109.3 287 75.5 292.8 50 285.3 C 38.6 281.9 31.7 275.2 33 263','fill':'#8dc63f','stroke':'#8dc63f','stroke-miterlimit':'10','stroke-width':'0','fill-opacity':'1','stroke-opacity':'0'}]);
        AvGen.paper = Raphael("avatarBox",300,300);
    },

    toolBox: function() {

        moveRightBtn.on('click', function(){
            AvGen.paper.clear();
            AvGen.currSvg += 1;

            var svg = AvGen.svg[AvGen.currSvg-1];
            AvGen.paper.add(svg);
        });
    },
};

什么是moveRightBtn元素?它是动态生成的还是在声明了这个点击处理程序之后生成的?@broadcase:Updated the Q!当您调用工具箱时,$('#moveRightBtn')是否已经在DOM中?我的意思是is alert($('#moveRightBtn').length);返回1?顺便说一句,您应该告诉我们“它不起作用”是什么意思控制台中的。错误还是什么???如果这行在未注释时起作用:AvGen.paper.add(AvGen.svg1);忘记我以前的注释是的,它已经在DOM中,是的,AvGen.paper.add(AvGen.svg1);起作用。更新了Q btw。谢谢你的回答!尝试过了,但我得到了“TypeError:AvGen.svg未定义”:/