动态访问javascript对象

时间:2013-05-10 13:58:53

标签: javascript jquery object

我有一个javascript对象,我想通过动态变量访问:

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

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

console.log(color[currentColor]);

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

修改

问题是选项值在其末尾有空格,感谢大家快速回复:

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

6 个答案:

答案 0 :(得分: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]);

答案 1 :(得分:0)

您可能希望在找到地图中的颜色之前修剪字符串:

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

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

console.log(color[currentColor]);

通过像这样的DOMNodes路由数据并不是很快。

答案 2 :(得分: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()

答案 3 :(得分:0)

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

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

JS

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

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

console.log(color[currentColor]);

答案 4 :(得分:0)

我认为您在Chrome控制台中获得了未定义的内容。如果是这样,请查看What does it mean if console.log(4) outputs undefined in Chrome Console?

答案 5 :(得分:0)

如果你的html有一个id:

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