我有一个javascript对象,我想通过动态变量访问:
var color = {
red : '#ff0000',
black : '#000000',
silver : '#7d8989'
};
var currentColor = $(val).html();
console.log(color[currentColor]);
但我通过控制台得到未定义的消息。如何访问数据?
修改
问题是选项值在其末尾有空格,感谢大家快速回复:
var currentColor = $.trim($(val).html());
答案 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]);