2013-05-10 173 views
0

我有我想要一个动态变量访问JavaScript对象:访问JavaScript对象动态

var color = { 
       red : '#ff0000', 
       black : '#000000', 
       silver : '#7d8989' 
      }; 

var currentColor = $(val).html(); 

console.log(color[currentColor]); 

但我通过控制台得到了一个未定义的消息。我如何访问数据?

编辑:

问题是,期权的价值在其末端有空格,谢谢大家快速回复:

var currentColor = $.trim($(val).html()); 
+6

是什么'$(VAL)的.html();' – 2013-05-10 14:01:13

+1

你检查什么'currentColor'值在获取“颜色”对象的值之前。如果你指定一个现有的属性名称,这应该工作。 – Kenneth 2013-05-10 14:01:42

+0

如果val.html是“红色”等,这应该工作 – 2013-05-10 14:01:54

回答

2

这工作。就像评论一样,我不确定“val”是什么,但如果它是一个ID,请确保它的目标正确。

HTML:

<p id="val">red</p> 

JS:

var color = { 
       red : '#ff0000', 
       black : '#000000', 
       silver : '#7d8989' 
      }; 
var currentColor = $("#val").html(); 
console.log(color[currentColor]); 
+0

@blachawk对于动态值,点符号是不可能的。没有'color'的'currentColor'属性 - 你必须使用括号表示,就像他们拥有它 – Ian 2013-05-10 14:07:00

+0

@Ian,没错!谢谢你的收获! – blackhawk 2013-05-10 14:08:12

0

你也许想在你的地图上找到颜色之前修剪你的字符串:

var color = { 
    red : '#ff0000', 
    black : '#000000', 
    silver : '#7d8989' 
}; 

var currentColor = $.trim($(val).html()); 

console.log(color[currentColor]); 

而且它不是非常快像这样通过DOMNodes传送数据。

0

你的代码似乎是工作的罚款,所以它可能是一些错误的选择 见http://jsfiddle.net/9GPbv/1/工作正常

<div class="val">red</div> 

var color = { 
       red : '#ff0000', 
       black : '#000000', 
       silver : '#7d8989' 
      }; 

var currentColor = $(".val").html(); 

alert(color[currentColor]); 

此外,如果您使用的输入像在http://jsfiddle.net/tMFZr/你应该使用.VAL()不html的()

0

,因为您将使用它作为字符串值你应该在你的对象使用引号: HTML

<div id="val">red</div> 

JS

var color = { 
       'red' : '#ff0000', 
       'black' : '#000000', 
       'silver' : '#7d8989' 
      }; 

var currentColor = $(val).html(); 

console.log(color[currentColor]); 
+0

但是,请使用'var val =“#val”' – Bergi 2013-05-10 14:11:52

+0

不是真的需要,但也不会伤害(http://jsfiddle.net/tU8fu/) – rafaelcastrocouto 2013-05-10 14:25:54

+0

当然,但[它](http:// stackoverflow。 com/q/3434278/1048572)在我看来,仍然是一个错误的IE – Bergi 2013-05-10 14:53:29

0

如果你的HTML有一个id:

var color = { 
    red : '#ff0000', 
    black : '#000000', 
    silver : '#7d8989' 
}; 
var currentColor = document.getElementById("val").innerText; 
console.log(currentColor); 
console.log(color[currentColor]);