Javascript 在函数内部调用对象文字元素

Javascript 在函数内部调用对象文字元素,javascript,jquery,Javascript,Jquery,我试图在函数内部调用对象文字元素,但它不起作用。。。当开始调用函数内部的元素“image”时,它会给我一个未定义的错误 var w1 = {warframeName:"Ash", health:450, shield:300, power:150, armor:65.0, sprint:1.15, stamina:100, image:"images/warframes/ash.jpg"}; $(".woption").click(function() { var wClass = $

我试图在函数内部调用对象文字元素,但它不起作用。。。当开始调用函数内部的元素“image”时,它会给我一个未定义的错误

var w1 = {warframeName:"Ash", health:450, shield:300, power:150, armor:65.0, sprint:1.15, stamina:100, image:"images/warframes/ash.jpg"};

$(".woption").click(function() {
    var wClass = $(this).attr('class').split(' ')[0];

    for(var x = 1; x <23; x++) {
        if(wClass == "w"+x) {
            $(".warframe_selector").css("background", "url(" + ('w'+x).image +") no-repeat", "important");
            $(".warframe_selector").css( "background-size", "100%" );
        } else {}
    }

    $("#cover").fadeOut(function() {});
    $(".warframe_option").fadeOut(function() {});
});
var w1={warframeName:“Ash”,生命值:450,盾牌:300,威力:150,护甲:65.0,冲刺:1.15,耐力:100,图像:“images/warframes/Ash.jpg”};
$(“.wooption”)。单击(函数(){
var wClass=$(this.attr('class').split('')[0];

因为(var x=1;x在你的代码中
w1
不是一个数组,它是一个指向对象文本的变量。这意味着你不能像
('w'+1)那样访问它。image
。你有两个选项

  • 让它成为一个数组,像数组一样访问它

    var w = [{warframeName:"Ash", health:450, shield:300, power:150, armor:65.0, sprint:1.15, stamina:100, image:"images/warframes/ash.jpg"}];
    ... w[x].image  ...
    
  • 使对象文字具有一定的作用域,并使用方括号表示法访问它

     window.myNamespace = {};
     window.myNamespace.w1 = {warframeName:"Ash", health:450, shield:300, power:150, armor:65.0, sprint:1.15, stamina:100, image:"images/warframes/ash.jpg"}
    ... window.myNamespace['w' + x].image ...
    

  • 你知道我们要问什么,不是吗?不,我不知道:/你在问什么?定义:“不起作用”(这就是我们要问的)还有,你期望
    ('w'+x).image
    做什么?等等,我们可以在学究身上做得更好,不是吗?“w1”表示变量名称的字符串…无需指定。在编号列表中,使用8个空格(而不是4个)创建代码块。这是一个奇怪的降价怪癖。@RocketHazmat-谢谢,在放弃之前,我只尝试了大约5次使用正确的编号列表来实现这一点!数组方法对我仍然不起作用…但是我会继续处理它…@Nesiehr如果第一个方法不起作用,你要么忘了用sq包装当前的声明uare括号(这是一个相当微妙的变化)或变量
    w
    在不同的范围内。