javascript - 动态网页在检索对象属性时显示未捕获的错误。如何正确地做到这一点?
问题描述
我创建了 2 个 JavaScript 文件以在 HTML 中动态显示数据。一个 JavaScript 文件 data.js 有一个对象数组(比如说目录),另一个 JavaScript 文件(function.js)有一个加载这些对象的函数,然后创建 HTML 元素并在 HTML 页面上显示项目(目录)。
控制台向我显示名称、价格(属性)错误上未捕获的错误articleName.innerText = catalog[i].name;
`我不明白为什么会发生此错误?
请指导我如何解决这个问题。
//function.js
function func() {
var articles = document.getElementById("content");
var catalog = catalogArray;
for (var i = 0; i <= catalog.length; i++) {
var article = document.createElement("div");
article.setAttribute("class", "addClass class2 class3");
var articleName = document.createElement("h2");
articleName.setAttribute("class", "heading class2 class3");
articleName.innerText = catalog[i].name;
article.appendChild(articleName);
var articleDecs = document.createElement("div");
articleDecs.setAttribute("class", "border class2 class3");
articleDecs.innerText = catalog[i].desc;
article.appendChild(articleDecs);
var articlePrice = document.createElement("div");
articlePrice.setAttribute("class", "border class2 class3");
articlePrice.innerText = catalog[i].price + " Dh";
article.appendChild(articlePrice);
articles.appendChild(article);
}
}
// data.js
var catalogArray = [{
code: 100,
name: "Learn JS",
desc: "To make your web paged dynamic",
price: 150,
image: "./images/100Tshirt.jpg"
},
{
code: 101,
name: "T Shirt",
desc: "Lorem ipsum, or lipsum as it is sometimes known, is dummy text used in laying out print, graphic or web designs.",
price: 0,
image: "./images/101Tshirt.jpg"
},
{
code: 102,
name: "T Shirt 2",
desc: "Lorem ipsum, or lipsum as it is sometimes known, is dummy text used in laying out print, graphic or web designs.",
price: 0,
image: "./images/102Tshirt.jpg"
}
];
.addClass {
font-size: 100px;
color: grey;
background-color: blue;
border-style: 2px solid yellow;
}
.heading {
color: green;
}
.border {
border: 1px solid grey;
}
.imgclass {
height: 300px;
width: 200px;
}
<body onload="func()">
<section id="content">
</section>
</body>
解决方案
您正在尝试迭代太多次,并且需要考虑从零开始的数组:
for (var i = 0; i <= catalog.length; i++) {
这应该是:
for (var i = 0; i < catalog.length; i++) {
演示:
//function.js
// data.js
var catalogArray = [{
code: 100,
name: "Learn JS",
desc: "To make your web paged dynamic",
price: 150,
image: "./images/100Tshirt.jpg"
},
{
code: 101,
name: "T Shirt",
desc: "Lorem ipsum, or lipsum as it is sometimes known, is dummy text used in laying out print, graphic or web designs.",
price: 0,
image: "./images/101Tshirt.jpg"
},
{
code: 102,
name: "T Shirt 2",
desc: "Lorem ipsum, or lipsum as it is sometimes known, is dummy text used in laying out print, graphic or web designs.",
price: 0,
image: "./images/102Tshirt.jpg"
}
];
function func() {
var articles = document.getElementById("content");
var catalog = catalogArray;
for (var i = 0; i < catalog.length; i++) {
console.info(catalog[i]);
var article = document.createElement("div");
article.setAttribute("class", "addClass class2 class3");
var articleName = document.createElement("h2");
articleName.setAttribute("class", "heading class2 class3");
articleName.innerText = catalog[i].name;
article.appendChild(articleName);
var articleDecs = document.createElement("div");
articleDecs.setAttribute("class", "border class2 class3");
articleDecs.innerText = catalog[i].desc;
article.appendChild(articleDecs);
var articlePrice = document.createElement("div");
articlePrice.setAttribute("class", "border class2 class3");
articlePrice.innerText = catalog[i].price + " Dh";
article.appendChild(articlePrice);
articles.appendChild(article);
}
}
.addClass {
font-size: 100px;
color: grey;
background-color: blue;
border-style: 2px solid yellow;
}
.heading {
color: green;
}
.border {
border: 1px solid grey;
}
.imgclass {
height: 300px;
width: 200px;
}
<body onload="func()">
<section id="content">
</section>
</body>
推荐阅读
- python - 我的 Django 帐户应用程序出现错误
- docker - 无法启动容器:OCI 运行时创建失败:container_linux.go:349
- sql-server - SQL Server - 使用 html 格式将 nvarchar 变量添加到电子邮件
- java - 你如何为android中的特定单词设置粗体样式?
- gcc - Gcc Makefile .elf 文件失败
- java - 如何在android studio的textview中显示recyclerview的总数
- php - 循环遍历多维 PHP 数组的次数太多了
- asp.net - 从外部 URL 重定向回 ASP.NET MVC 中的操作方法后无法保留 cookie
- python - 如何在 Matplotlib 中的 Y 轴和开始和结束垂直条之间留出一些空间
- c++ - 在opencv中获取C ++中灰度图像的直方图