2014-12-03 58 views
0

我想調用函數內部的對象文字元素,它不工作......當它調用函數內部的元素「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() {}); 
}); 
+1

你知道我們要問什麼,不是嗎? – 2014-12-03 17:31:30

+0

不,我不知道:/你在問什麼? – Nesiehr 2014-12-03 17:32:54

+0

define:「不工作」(那是什麼問) – Jamiec 2014-12-03 17:34:17

回答

2

在代碼w1心不是陣列,它的一個變量指向對象文本。這意味着你只是不能像('w' + 1).image那樣訪問它。你有兩個選擇

  1. 使其成爲一個數組,訪問它像一個數組

    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 ... 
    
  2. 使對象的文字有一定的範圍,並用方括號來訪問它

    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 ... 
    
+0

在編號列表中,使用8個空格(而不是4個)來創建代碼塊。這是一個奇怪的降價怪癖。 – 2014-12-03 17:42:11

+0

@RocketHazmat - 謝謝,我只嘗試了大約5次,才放棄了正確的編號列表! – Jamiec 2014-12-03 17:42:40

+0

數組方法仍然不適用於我...我會繼續與它混合... – Nesiehr 2014-12-03 17:44:13

-1

您可以使用如下的eval。

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(" + eval('w'+x).image +") no-repeat", "important"); 
      $(".warframe_selector").css("background-size", "100%"); 
     } else {} 
    } 

    $("#cover").fadeOut(function() {}); 
    $(".warframe_option").fadeOut(function() {}); 
}); 

但如果你使用

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

,你可以訪問一個較爲帥氣的方式你的價值觀。 I.E.

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

[eval = evil](http://xkr.us/js/eval)最好不要建議。 – Jamiec 2014-12-03 17:49:45

+0

@Jamiec當然是!因此,我爲什麼建議更美觀的出路。但是,如果我錯了,請糾正我,回答這個問題! – 2014-12-03 18:00:38

相關問題