为什么只有最后一项显示,而不是全部显示
why is only the last item is showing and not all of them
我正在使用下面的代码调用一个显示所有产品的php页面,然后解析它们并将它们显示在字符串中。上周,它显示了所有结果,效果很好,但现在它似乎已经坏了,只显示数据库中的最后一个结果。在盯着屏幕看了几天和痛苦的一个小时后,我开始发疯了,需要一些帮助。
function display(results) {
article = document.getElementById("homeArticle");
item = '';
for (var i = 0; i < results.length; i++){
var item = results[i];
var name = item.P_NAME;
var description = item.P_DESCRIPTION;
var price = item.P_PRICE;
// next I add to the string that we want to place on the page
item = '<section id="homePageSection"> <p>Name:' + name + '</p><p>Description:' + description + '</p><p>Price:' + price + '</p></section>';
};
article.innerHTML = item;
}
function getItems() {
var xhr = new XMLHttpRequest();
xhr.onload = function() {
var results = JSON.parse(this.responseText);
display(results.rows);
};
xhr.open("GET", "displayData.php");
xhr.send();
}
window.addEventListener("load", getItems);
如果有人能提出任何有帮助的建议,非常感谢!
您需要两个变量。一个用于构建html字符串,另一个用于保存结果数组中的每个项。
将您的代码更改为:
function display(results) {
article = document.getElementById("homeArticle");
var html = '';
for (var i = 0; i < results.length; i++){
var item = results[i];
var name = item.P_NAME;
var description = item.P_DESCRIPTION;
var price = item.P_PRICE;
// next I add to the string that we want to place on the page
html += '<section id="homePageSection"> <p>Name:' + name + '</p><p>Description:' + description + '</p><p>Price:' + price + '</p></section>';
};
article.innerHTML = html;
}
这样,您将附加html字符串,而不是覆盖前面的字符串。
还要考虑确保每个html元素都有一个唯一的id,可以通过在id后面加i来实现,例如
html += '<section id="homePageSection-'+i+'"> <p>Name:' + name + '</p><p>Description:' + description + '</p><p>Price:' + price + '</p></section>';
合并item
字符串,不要使用重复的ID,而是使用类:
item += '<section class="homePageSection"> <p>Name:' + name + '</p><p>Description:' + description + '</p><p>Price:' + price + '</p></section>';
您所做的是在每次迭代中覆盖item
,这就是为什么您只得到最后一个。
更新
忘记提供我写的最后一句话的代码了。为了避免覆盖它,可以使用不同的变量(如另一个答案中所示),也可以直接分配值,而不创建不必要的变量,如下所示:
for (var i = 0; i < results.length; i++){
item += '<section class="homePageSection"> <p>Name:' +
results[i].P_NAME +
'</p><p>Description:' +
results[i].P_DESCRIPTION +
'</p><p>Price:' +
results[i].P_PRICE +
'</p></section>';
}
相关文章:
- 从桌面读取python文件时高亮显示代码
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何在生成下载文件时显示加载动画
- React重新渲染但未显示正确的组件
- 为什么只有最后一项显示,而不是全部显示
- 更改当前网页上显示的部分(即不是全部)文本
- 引导程序转盘同时显示其全部内容
- 多张图片上传,全部显示,全部拖拽
- 如果文本不适合同一行,则不显示全部
- 任何检测用户何时高亮显示或复制全部/部分URL的方法
- 生成100个随机数,并将它们全部显示在面板中
- JQuery隐藏/显示一个,而不是全部
- 如何显示隐藏的
- 元素一个接一个或全部同时
- 如何从显示全部选项中隐藏一个类别?
- Highstock日期时间xAxis,只能显示全部.没有变焦
- 替换'全部显示'按钮,带有'少透露'单击
- “视图”页面中的“折叠”面板在“全部”按钮上显示第一条记录
- j查询多个切换隐藏全部/只显示一个
- 画布图像不能显示全部,被剪切的图像只能显示部分图像
- Jquery,for loop显示全部