Javascript数组问题:无法读取未定义属性
Javascript array problem: Cannot read property of undefined
我正试图在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>';
这段代码在浏览器中给了我一个错误:
Uncaught TypeError: Cannot read property 'id' of undefined
我如何在这种情况下使用数组?
正如@dystroy所说,您每次都使用相同的level
对象,并且您修改它而不是创建一个新对象。
无论如何,你可以用下面的语法来简化它:
var levels = [
{id: 1, name: "Суперваизер", url: "supervisor" },
{id: 2, name: "Торговый представитель", url: "agent" },
{id: 3, name: "Группа продукта", url: "pg_group" },
{id: 4, name: "Категория продукта", url: "pg_category" },
{id: 5, name: "Торговая марка", url: "pg_trademark"},
{id: 6, name: "Продукт", url: "product" },
{id: 7, name: "Регион", url: "region" },
{id: 8, name: "Типы т.т.", url: "outlet_type" },
{id: 9, name: "Торговая точка", url: "outlet" },
{id: 10, name: "Тип оплата", url: "payment_type"},
{id: 11, name: "Филиал", url: "filial" },
{id: 12, name: "Экспедитор", url: "expeditor" },
{id: 13, name: "Участник проекта", url: "action_type" }
];
var select = '<select>';
for(var i = 0; i < levels.length; i++) {
select += '<option value=' + levels[i].id + '>' + levels[i].name + '</option>';
}
select += '</select>';
您可以使用匿名对象并将其压入数组
levels.push({ id: 1, name: "Суперваизер", url: "supervisor" });
我建议在for
循环中使用数组长度而不是硬编码值:
for(var i = 0; i < levels.length; i++){
//do work
}
小提琴
相关文章:
- 未捕获的TypeError无法读取未定义的属性socialsharing
- angularjs无法读取未定义的属性then
- 无法读取未定义的属性“rid”
- 未捕获的类型错误: 无法读取未定义的属性“图像”
- 类型错误:无法读取未定义的属性“toString” - 为什么
- angular2形式-无法读取未定义的属性替换
- Highcharts错误“;无法读取未定义的属性“;
- 无法读取未定义的属性“最后”的未定义
- 运行此程序后出现错误,未捕获的类型错误:无法读取未定义的属性“推送”
- 无法读取未定义的属性“替换” - 替换 JS 生成的 HTML 中的文本
- 无法读取未定义的属性 - NodeJS,Express,Mongoose
- Google 表格脚本 - “无法读取未定义的属性”(如果不是)
- 无法读取未定义的属性“用户名” - 通过电子邮件在 Node.js 中发送表单数据
- 获取 无法读取未定义的引导轮播脚本的属性“偏移宽度”
- JavaScript 2d 数组导致“无法读取未定义的属性'未定义'”
- 无法读取未定义的属性“_handleNewFile”
- 无法读取未定义的属性“HTML5HISTORY”
- 未捕获的类型错误:无法读取未定义的属性“scrollTop”
- 无法读取未定义的属性“警报”
- 未捕获的类型错误: 无法读取未定义的 - 对象的属性