Reputation: 1176
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?
Upvotes: 4
Views: 3215
Reputation: 28419
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]);
...
Upvotes: 6
Reputation: 99351
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....
}
Upvotes: 6