Frage

I am trying to access a property (name) on an object that is in fact located inside another object. I initialized the object in a file:

var icons = {

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

};

And then tried to check the object with this code:

   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.");
    }
  }

And of course, the alert("Something went wrong") goes off everytime I run this. I have tried for a long time to find a solution, but to no avail. Can anyone please help?

War es hilfreich?

Lösung

for(var x in y) x is the key of the object, you need to use y[x] to return the value:

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

Andere Tipps

for(var icon in icons)

In the for loop, icon you're assigned there isn't an object, it's the index/key of each item.

for (var i in icons){
    console.dir(icons[i]);
...
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top