我正在尝试一些可能非常容易的事情,但我似乎无法找出为什么它不起作用。我试图用jquery / javascript动态创建和数组。
我的代码;
var icons = $('.icon');
var desktopicons = [];
var user = { name: username };
var iconsetup = { myicons: [] };
desktopicons.push(user);
desktopicons.push(iconsetup);
$.each(icons, function() {
var name = $(this).attr('name');
var rel = $(this).attr('rel');
var icon = {
icon: [{
name: name,
rel: rel
}]
};
iconsetup.myicons[0].push(icon);
});
desktopicons.push(user);
desktopicons.push(iconsetup);
$('#desktop').append(desktopicons[0].name);
$('#desktop').append(desktopicons[1].myicons[0].icon[0].name);
不知怎的,我的日志文件说不能调用'iconsetup.myicons [0] .push(icon);'上的undefined方法。这一行。
任何能告诉我如何创建阵列的人?谢谢!
答案 0 :(得分:6)
您正在使用myicons[0]
,这意味着您获得了myicons
的第一项,而不是数组
使用
iconsetup.myicons.push(icon);
您还可以使用
简化整个.each()
部分
iconsetup.myicons = icons.map(function(idx, item){
return {icon:[{name: item.name, rel: item.rel}]}
}).get();
答案 1 :(得分:0)
您正试图将图标推送到未定义的myicons[0]
,而是需要推送到myicons,这会将图标添加到您的阵列中:
iconsetup.myicons.push(icon);
答案 2 :(得分:0)
您永远不会将iconsetup.myicons[0]
等于。 iconsetup.myicons
只是一个空数组,其中没有任何内容,也没有元素0.也许你的意思是:
iconsetup.myicons.push(icon);