【问题标题】:Access javascript objects dynamically动态访问 javascript 对象
【发布时间】:2013-05-05 05:48:30
【问题描述】:

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

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

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

console.log(color[currentColor]);

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

编辑:

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

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

【问题讨论】:

  • 什么是$(val).html();
  • 在从color 对象获取值之前,您是否检查了currentColor 的值。如果您指定现有的属性名称,这应该可以工作。
  • 如果 val.html 是“红色”等,这应该可以工作
  • 如果是这样的话,也许你想选择一个 id 为 "val" 的元素 -> $("#val").text()
  • 获取您想要的选择值.val() 而不是.html()

标签: javascript jquery object


【解决方案1】:

这行得通。就像评论一样,我不确定“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]);

【讨论】:

  • @blachawk 点表示法不能用于动态值。 color 没有 currentColor 属性-您必须像他们拥有的那样使用括号符号
【解决方案2】:

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

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

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

console.log(color[currentColor]);

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

【讨论】:

    【解决方案3】:

    您的代码似乎运行良好,因此您的选择器可能有问题 请参阅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()

    【讨论】:

      【解决方案4】:

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

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

      JS

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

      【讨论】:

      • 但是请使用var val = "#val"
      • 当然,但是it 仍然是从有缺陷的 IE 继承而来的不好的做法
      • 在我看来,不使用 var 是一种不好的做法,将您的 ID 作为对元素的引用是另一个主题。
      【解决方案5】:

      我认为您在 chrome 控制台中得到了 undefined。如果是,请查看What does it mean if console.log(4) outputs undefined in Chrome Console?

      【讨论】:

        【解决方案6】:

        如果你的 html 有一个 id:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-07-21
          • 1970-01-01
          • 1970-01-01
          • 2011-08-10
          • 2011-10-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多