动态访问javascript对象

Access javascript objects dynamically

本文关键字:对象 javascript 访问 动态      更新时间:2023-09-26

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

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

但是我从控制台得到未定义的消息。我如何访问这些数据?

编辑:

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

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

可以。就像评论一样,我不确定"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]);

你可能想在地图中找到颜色之前修剪字符串:

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

这样通过domnode路由数据不是很快。

您的代码似乎工作得很好,所以可能是您的选择器出了问题参见http://jsfiddle.net/9GPbv/1/works fine

<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()

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

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

JS

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

我认为你在chrome控制台得到未定义。如果是这样,请看看如果Console .log(4)输出在Chrome控制台未定义是什么意思?

如果你的html有一个id:

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