【发布时间】:2018-12-15 11:30:44
【问题描述】:
我正在尝试用 javascript 编写一些应用程序,但遇到了数组问题。
我有以下代码
var levels=new Array(),level={};
level.id=1;level.name="Суперваизер";level.url="supervisor";
levels.push(level);
level.id=2;level.name="Торговый представитель";level.url="agent";
levels.push(level);
level.id=3;level.name="Группа продукта";level.url="pg_group";
levels.push(level);
level.id=4;level.name="Категория продукта";level.url="pg_category";
levels.push(level);
level.id=5;level.name="Торговая марка";level.url="pg_trademark";
levels.push(level);
level.id=6;level.name="Продукт";level.url="product";
levels.push(level);
level.id=7;level.name="Регион";level.url="region";
levels.push(level);
level.id=8;level.name="Типы т.т.";level.url="outlet_type";
levels.push(level);
level.id=9;level.name="Торговая точка";level.url="outlet";
levels.push(level);
level.id=10;level.name="Тип оплата";level.url="payment_type";
levels.push(level);
level.id=11;level.name="Филиал";level.url="filial";
levels.push(level);
level.id=12;level.name="Экспедитор";level.url="expeditor";
levels.push(level);
level.id=13;level.name="Участник проекта";level.url="action_type";
levels.push(level);
//select
var select='<select>';
for(var i=0;i<13;i++){
var option='<option value=' + levels[i].id + '>' + levels[i].name + '</option>';
select+=option;
}
select+='</select>';
此代码在浏览器中显示错误:
未捕获的类型错误:无法读取未定义的属性“id”
在这种情况下如何使用数组?
【问题讨论】:
-
这段代码有个大问题:它总是设置同一个关卡对象。
-
而不是创建一个对象字面量并不断地覆盖它(这会影响已经推入数组的所有其他实例)。每次推送一个新的空白对象文字。
array.push({ id:1, name:"first one" })等 -
问题在于您没有显示的代码。上面的代码不会触发您描述的错误。 (它有提到的大问题dystroy,但这不会导致上面的错误。)
-
投票关闭为“无法复制”
-
这不是问题,但这里有一个更好的方法来创建该数组(并且没有上面提到的问题 dystroy):pastie.org/9326267 或者当然你可以使用构造函数来避免重复输入属性名称。
标签: javascript html arrays