【问题标题】:Javascript: can't access object property through for..in loopJavascript:无法通过 for..in 循环访问对象属性
【发布时间】:2013-10-29 06:56:13
【问题描述】:

我正在尝试访问实际上位于另一个对象内的对象的属性(名称)。我在一个文件中初始化了对象:

var icons = {

    "facebook": {name: 'facebook', icon_url: 'img/logos/facebook.png'}

};

然后尝试用这段代码检查对象:

   var icon_current_class;

  for(var icon in icons){

    console.dir(icon);
    //outputs an object named facebook but says it has no properties

    if( $(this).hasClass( icon.name ) ){
      icon_current_class = icon.name;
    }else{
      alert("Something went wrong. Please contact the mods.");
    }
  }

当然,每次我运行它时都会发出警报(“出现问题”)。我已经尝试了很长时间以找到解决方案,但无济于事。有人可以帮忙吗?

【问题讨论】:

标签: javascript html css object for-in-loop


【解决方案1】:

for(var x in y)x是对象的key,需要使用y[x]来返回值:

for(var icon_name in icons){
    var icon = icons[icon_name];
    .....code....
}

【讨论】:

  • 这里有回声吗?
  • 啊哈哈也谢谢你!您实际上解释了您编写的代码,非常感谢您!
  • @popnoodles 我实际上在你之前开始输入我的答案,但是我的 wifi 掉线了,你应该得到答案。
【解决方案2】:
for(var icon in icons)

在 for 循环中,icon 分配给您的不是对象,而是每个项目的索引/键。

for (var i in icons){
    console.dir(icons[i]);
...

【讨论】:

  • 嗯,我还没有想到为什么这还有效,但非常感谢您的快速回答! :)
猜你喜欢
  • 2015-10-07
  • 2021-11-13
  • 1970-01-01
  • 2021-03-15
  • 2018-11-02
  • 2015-03-16
  • 1970-01-01
  • 2012-02-29
  • 2018-09-13
相关资源
最近更新 更多