【问题标题】:Using JS to display XML as a table in HTML only shows one row使用JS将XML显示为HTML中的表格只显示一行
【发布时间】:2017-07-28 02:27:59
【问题描述】:

下面的代码只显示表格的第一行,它不显示 XML 文件的其余元素。我不知道为什么。

编辑:我看到部分问题是 vegTable 是一个变量。我需要一个 for 循环中的函数。

编辑 2:我现在可以增加表格以获取适当数量的行,但第一行数据就是显示的所有数据,多次显示。

JSFiddle

function getVeggies() {
"use strict";
var veg, sci, vegTable;
veg = (cc[dd].getElementsByTagName("veg")[0].childNodes[0].nodeValue);
sci = (cc[dd].getElementsByTagName("sciname")[0].childNodes[0].nodeValue);

for (dd = 0; dd < cc.length; dd++) {

vegTable += "<tr><td>" + veg + "</td><td>" + sci + "</td></tr>";
}

document.getElementById('fullTable').innerHTML = vegTable;
dd = 0;
}

【问题讨论】:

  • 你能给我们展示一个示例 xml 字符串并设置一个 jsfiddle
  • JSFiddle 那或多或少是 XML 和完整的 JS 脚本。我通过将 vegTable = 更改为 vegTable += 解决了递增问题,但现在它只显示第一行四次。

标签: javascript html xml html-table row


【解决方案1】:

尝试将元素获取逻辑移动到循环中:

function getVeggies() {
    "use strict";
    var veg, sci, vegTable;
    var cc = cc;//whats cc?

    for (var i = 0; i < cc.length; i++) { 
        veg = (cc[i].getElementsByTagName("veg")[0].childNodes[0].nodeValue);
        sci = (cc[i].getElementsByTagName("sciname")[0].childNodes[0].nodeValue);

        vegTable += "<tr><td>" + veg + "</td><td>" + sci + "</td></tr>";
    }

    document.getElementById('fullTable').innerHTML = vegTable;
}

【讨论】:

  • 就是这样!谢谢! 'cc' 是一个全局变量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-27
  • 2017-07-28
  • 1970-01-01
  • 1970-01-01
  • 2011-01-18
  • 2013-12-01
  • 1970-01-01
相关资源
最近更新 更多