0

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

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

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

console.log(color[currentColor]);

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

编辑:

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

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

6 回答 6

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]);
于 2013-05-10T14:04:08.280 回答
0

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

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

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

console.log(color[currentColor]);

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

于 2013-05-10T14:05:26.663 回答
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()

于 2013-05-10T14:05:56.953 回答
0

如果您的 html 有一个 id:

var color = {
    red : '#ff0000',
    black : '#000000',
    silver : '#7d8989'
};
var currentColor = document.getElementById("val").innerText;
console.log(currentColor);
console.log(color[currentColor]);
于 2013-05-10T14:12:05.157 回答
0

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

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

JS

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

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

console.log(color[currentColor]);
于 2013-05-10T14:07:56.770 回答
0

我认为你在 chrome 控制台中得到了 undefined 。如果是这样,请看一下如果 console.log(4) 在 Chrome 控制台中输出 undefined 是什么意思?

于 2013-05-10T14:10:02.900 回答