- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
最近我在这里寻求有关 javascript 的帮助。我需要能够解析 CSV 文件并将其输出为 HTML 的工具。
有人能够极大地帮助我。唯一的问题是它输出为单行表。在 CSV 文件中,每一行没有特定数量的列/数据,这意味着行数据的长度不同。
我一直在尝试做的是编写一些 if 语句,仅选择“姓氏”或“知名度”之类的内容,这样我就可以对结果进行排序。
最好的方法是什么?我需要设置输出数据的样式,所以我认为 div id 会比表格更好。另外,我应该在代码中的什么地方进行编辑(我的 javascript 知识非常初级)。
我试过的 if 语句(可能完全错误):
function firstName($container){
var firstN = $container;
var n = firstN.includes("First Name");
if (n != 0){
document.getElementById("first_name").innerHTML="First name = ";
return;
}
}
主要代码块(CSV 文件可以在 http://www.fooda.website/testResults.csv 找到):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="jquery-1.12.3.min.js" type="text/javascript">
</script>
<title>Untitled Document</title>
<script type="text/javascript">
// ============================
// Allow for a cached result
// ============================
var csvRows = [];
// ============================
// ============================
// Given an array of rows build a table.
// ============================
function buildTable(csvRows){
// Our base result
var $table = $("<table cellpadding=\"2\" cellspacing=\"0\"></table>");
// ============================
// For each row in the CSV build a <tr /> and append it to the <table />
// ============================
$table = csvRows.reduce(function($table, csvRow){
// For this demo just take the first few cells/columns
var csvRowCells = csvRow.split(",");
// Our base table row
var $tr = $("<tr>/tr>");
// ============================
// For each cell row build a <td /> and append it to the <tr />
// ============================
$tr = csvRowCells.reduce(function($tr, csvRowCell){
return $tr.append($("<td>/</td>").text(csvRowCell));
}, $tr);
// ============================
// Add our new <tr /> to the table then return the table
return $table.append($tr);
}, $table);
// ============================
return $table;
}
// ============================
// ============================
// Given an array of rows, randomly select one (as an array) and build a table with it.
// ============================
function fillContainerWithTable(csvRows, $container){
var randomRow = [csvRows[Math.floor(Math.random() * csvRows.length)]];
var $table = buildTable(randomRow);
$container.append($table);
}
// ============================
// ============================
// the click handler
// ============================
function myFunction(){
// some random csv I found...
var uri = "http://www.fooda.website/testResults.csv";
var $container = $("#wrap");
// You probably want a clean slate.
$container.empty();
// ============================
// If we have the data locally already just use it.
// ============================
if (csvRows.length !== 0){
console.log("using local data...");
fillContainerWithTable(csvRows, $container);
return;
}
// ============================
console.log("fetching remote data...");
$.get(uri, function(data){
csvRows = data.split("\n");
fillContainerWithTable(csvRows, $container);
});
}
// ============================
</script>
<style type="text/css">
body {
font-family: arial, helvetica, sans-serif;
font-weight: normal;
font-size: 13px;
color: #000;
text-align: left;
margin: 3px 0px;
}
#wrap {
padding: 20px;
}
#wrap table {
border: solid 1px;
border-collapse: collapse;
background-color: aliceblue;
height:400px;
width:100%;
}
#first_name {
height:200px;
width:200px;
background-color:#0C0;
}
</style>
</head>
<body>
<button onclick="myFunction()">Click me</button>
<div id="wrap"></div>
<div id="first_name">
</div><!--first_name-->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</body>
</html>
提前致谢!
最佳答案
简短的回答是“这是关于 SO 的许多‘我如何将 JSON 转换为 HTML 表格’问题的重复”,最后我只是向你指出其中的一些问题,但我想带您完成它。
CVS(逗号分隔值)看起来像
Col1,Col2,Col3,Col4
row1value1,row1value2,row1value3
row2value1,row2value2
row3value1,,row3value3,row3value4
虽然不是必然这种情况,但您可以将 CSV 视为一种非常紧凑的纯文本写入表格的方式,其中每一行的值都按相同的顺序(如表格列)并且为空单元格看起来像“,,”。如果上面的 csv 是一个表格(例如,如果您将其导入 Excel 等),它将是
Col1 Col2 Col3 Col4
row1value1 row1value2 row1value3
row2value1 row2value2
row3value1 row3value3 row3value4
另一方面,您的数据实际上是一个 JSON“对象”列表,每行一个。在 JSON 中,对象 包含在 { }
中并且由“键/值”对组成。一个 JSON 对象看起来像
{"key1":"value1", "key2":"value2"}
JSON 让您可以将对象分组到数组 中。 [ ]
中包含一个 JSON 数组.
在 JSON 中,上表看起来像
[{'Col1':'row1value1','Col2':'row1value2','Col3':'row1value3'},
{'Col1':'row1value1','Col2':'row1value2'},
{'Col1':'row1value1','Col3':'row1value3','Col4':'row1value4'}]
使用 JSON 时,您可以说“遍历数组中的每个对象”和“对于当前对象,给我 Col2
值”。 (请注意,这意味着相关的 JSON 对象不必以相同的顺序列出键/值对,并且您不必指定缺失值。)如果您知道数组中的每个可能的键(在这种情况下,会是 Col1、Col2、Col3 和 Col4)你可以说
"Loop through the array, put each object in a
<tr>
, and for each object first put the Col1 value in a<td>
, then put the Col2 value in a<td>
, then put the Col3 value in a<td>
, then put the Col4 value in a<td>
."
这正是您想要做的……事实证明,已经有很多工具可以做到这一点!唯一挡在你和使用它们之间的是放一个 [
在文件的开头,一个 ,
在除最后一行之外的每一行的末尾,以及一个 ]
在文件的末尾。如果你能做到这一点,那你就走运了。如果这是静态数据,只需在文本编辑器中打开数据并使用查找/替换来添加行尾逗号。如果它是动态生成的,您将不得不想出一种添加内容的方法(解决方案类似于 [
,将文件拆分为 }
,对拆分数据的每个 block 进行添加后跟一个 ,
除非它是最后一个 block ,然后添加一个 ]
,然后通过 JSON-to-HTML-table 工具运行它)。具体如何操作由您决定——如果您遇到困难,一定要提出一个新问题“我如何才能将 json 对象列表转换为 json 数组”。我不是 JSON 专家,我敢打赌有一些标准的方法可以做到这一点
这里有几个很有前途的 JSON 到 HTML 表解决方案。我很想知道其中之一是否适合您!
关于javascript - 将这些表格输出转换为 div 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39297958/
我有一个 div(我认为是容器?)我希望它成为中心页面。 Billede 2 我只想让所有上下文都位于页面中心,这怎么可能? 最佳答案 Billede 2 根据您的要求
我只是在研究 jQuery,偶然发现了 Find 函数。 我是这样测试的: $(document).ready(function(){ $('button').click(function()
如何制定一个规则来做这样的事情: .container .unit:first-child(if it has inside div.box1.extra) + .box2 { top: 50px;}
我想了解为什么浏览器显示 和 的方式不同? 这是一个示例:片段 #1 的预期输出是三个并排的框:[黑色]、[蓝色]、[红色]。代码段 #2 仅显示 [black] 和 [red] - 为什么代码段 #
我有一个奇怪的问题,我无法使用正常的嘶嘶声选择器来正确选择 jQuery 中的某些内容: 这两行代码不做同样的事情。 ele.children("div.a > div").addClass("bad
我有一个包含另外两个 div 的 div first div second div 父 div 有最大高度,因此不能增长超过一定数量。但是两个子 div 可以有任何大小(动态
我在两个 div 之间有问题。 div#mainbody 是父 div 有一个背景,div 2 子 div 有自己的背景所以 div 2 浮出父级 div 但我希望它位于父级 div 中。 HTML:
我在另一个具有特定宽度的 div 中有一个 div,但我希望子 div 的宽度与浏览器屏幕大小成百分比而不是与其父 div 的百分比,这意味着当我将子 div 的宽度设置为 50% 时,我希望它的大小
我有以下代码。当单击 div 1 中的按钮时,我需要隐藏 div 1 并显示 div2。 (在 Angular HTML5 中)。我有一个带有 Controller 等的 JS 文件,目前我有两个不同
现在我可以将容器 div 的大小自动调整到内部 div,或者我可以将整个东西居中...但我不知道如何同时进行这两项操作。 下面是我拥有的 CSS/布局。现在 page 和 main 元素都居中,但如果
当一个单元格 div 包含绝对定位的 div 时,如何在表格 div 中顶部对齐两个单元格 div? 在此示例中,不包含绝对定位的 div 的单元格 div 被下推。 HTML: 1
我的程序是一个游戏,从 4 个可玩 Angular 色开始,每个 Angular 色都在自己的类 charContainer 中,这 4 个 div 位于类 character 的容器中。当玩家通过点
我有这样的东西: 现在,#page 中没有任何格式。它适用于一些内容,我的意思是,当内容更大时,#page 也有更高的高度。但是,当今天我在其中应用 #con
我有一个 React 应用程序,并且在一些 CSS 方面遇到了一个稍微大一点的问题。 我有一个 View 分为两部分。但这两个部分位于一个更大的组件中。左侧部分显示一些联系人,右侧我想显示这些联系人的
我想像 facebook 注册页面一样,一个div1(section width:1024px)有四个div,左边div2(width:50%) 有div3(fb slogan),下面div4(con
在我的网页上遇到一个问题,母版页中的页脚对于某个特定页面没有正确显示。在那个页面上,我有一个 在底部。 在我的头上敲了一会儿之后,我发现要让页脚正确显示,我需要做的就是将该行更改为: 我不明白为什么
我正在使用 this plugin用于跨浏览器兼容的灰度图像。基本上,图像最初处于低不透明度的灰度模式。当用户将鼠标悬停在图像上时,灰度逐渐变为彩色,不透明度返回到 1,之前隐藏的 div 从底部向上
这是一个 jsfiddle link of my issue HTML 8.123456 huh-fjiuetie 条件是: h
当前面的 div 中的文本溢出时,如何防止后面的内联 div 换行显示。 如您所见,对于第一个帖子,主要内容换行到第二行,因此它后面的链接显示在新行上(这是不正确的)。 但是对于第 3 篇文章,主标题
我有一个 div,当它悬停在上面时,它会激活另一个 div。当用户将鼠标移动到激活的 div 上时,我希望该 div 保留下来。这是一个片段。 当您将鼠标悬停在金色框上时,紫色框会隐藏并显示灰色框。当
我是一名优秀的程序员,十分优秀!