javascript - 使用 Javascript 将 CSV 转换为 HTML 表。使用 CSV 中的列添加 CSS 类
问题描述
我正在尝试制作一个从 CSV 中提取数据并创建 HTML 表的 JS。这是我当前的脚本。它工作正常,但我想添加功能。
我不想显示最后一列并使用该数据来设置行的 CSS 类。
这只是我的修补和学习,所以解释不仅仅是一个解决方案会很棒!
function pullData() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var data = this.responseText;
var lines = data.split(/\r?\n|\r/),
output = [],
i;
for (i = 0; i < lines.length; i++)
output.push(
"<tr><td>" + lines[i].split(",").join("</td><td>") + "</tr></td>"
);
output =
"<table><tr><th>One</th><th>Two</th><th>Three</th><th>Four</th><th>Five</th><th>Six</th><th>Seven</th><th>Colour</th></tr>" +
output.join("") +
"</table>";
var div = document.getElementById("container");
div.innerHTML = output;
}
};
xhttp.open("GET", "data.csv", true);
xhttp.send();
}
它产生
解决方案
一种选择是将每一行的数据拆分为一个数组。然后用于pop()
检索和删除数组的最后一个元素,即颜色。然后将其用于类名或内联样式。
const data = `1,2,3,4,5,6,7,red
1,2,3,4,5,6,7,blue
1,2,3,4,5,6,7,green
1,2,3,4,5,6,7,yellow
1,2,3,4,5,6,7,orange
1,2,3,4,5,6,7,pink`;
var lines = data.split(/\r?\n|\r/),
output = [],
i;
for (i = 0; i < lines.length; i++) {
let columns = lines[i].split(",");
output.push("<tr style='background-color:" + columns.pop() + "'><td>" + columns.join("</td><td>") + "</tr></td>");
}
output = "<table><tr><th>One</th><th>Two</th><th>Three</th><th>Four</th><th>Five</th><th>Six</th><th>Seven</th></tr>" +
output.join("") +
"</table>";
var div = document.getElementById("container");
div.innerHTML = output;
<div id="container"></div>
推荐阅读
- java - 获取数据存储时间
- html - 我不想将 CSS 类的属性应用于列表中的元素
- javascript - 如何使用另一个对象访问 JavaScript 对象?
- php - 升级 Wordpress 5.0.3 后,Woocommerce 订单未全部显示
- python - 如何创建具有不同长度的数组系列的 DataFrame(某些部分中缺少数据)
- docker - 读取外部容器 Docker
- python - 从矩阵中获取轴
- node.js - 我自己的 TypeScript 模块的“找不到模块”
- swift - 将 github 存储库部署到 heoku 时遇到问题
- c# - 使用另一个应用程序实现 UI 自动化