【发布时间】:2019-06-05 18:38:40
【问题描述】:
我有一个 HTML 表格,我用 JSON 数据渲染,根据我的要求,我必须在 4 列中显示数据,无论数据大小是多少
问题
当我的 data.length 被 4 等分时,它显示两行四列,但是当它的长度为 6 时,它显示两行 3-3 列这是不正确的,如果我有数据长度为 5 那么它只显示 4 个项目而不是第五个项目,我不知道我在犯什么错误
我的代码
var tableValue = [{
"Item Name": "JACK DANIELS 30",
"Quantity": 292
}, {
"Item Name": "JACK DANIELS 750",
"Quantity": 731
}, {
"Item Name": "JAMESON 30",
"Quantity": 202
}, {
"Item Name": "JAMESON 750",
"Quantity": 49
}, {
"Item Name": "JIM BEAM WHITE 750",
"Quantity": 409
}]
function addTable(tableValue) {
var $tbl = $("<table />", {
"class": "table table-striped table-bordered table-hover "
}),
$tb = $("<tbody/>"),
$trh = $("<tr/>");
var split = Math.round(tableValue.length / 4); // here i Think some issue
console.log(split)
for (i = 0; i < split; i++) {
$tr = $("<tr/>", {
"class": "filterData"
});
for (j = 0; j < 4; j++) {
$.each(tableValue[split * j + i], function(key, value) {
$("<td/>", {
"class": "text-left color" + (j + 1)
}).html(value).appendTo($tr);
});
}
$tr.appendTo($tb);
}
$tbl.append($tb);
$("#DisplayTable").html($tbl);
}
addTable(tableValue);
.color1 {
background: #4AD184;
}
.color2 {
background: #EA69EF;
}
.color3 {
background: #E1A558;
}
.color4 {
background: #F4F065;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<div id="DisplayTable"></div>
在我的 JSON 中,我总共有 Items,但它只显示 4 个,我已经评论了我认为代码中存在问题的那一行
【问题讨论】:
-
首先我明白了,不要使用
round,而是使用Math.ceil()... 其他... 更好地创建纯html 代码,而不是附加... 更多:以防万一items%4不为零,比您需要添加更多单元格...祝您好运。 -
@skobaljic 你是说要改变我的方法,正确的新代码?
-
好吧,我会用其他方法,但你可以随心所欲。
-
@skobaljic 我没有得到这个想法除此之外我还做了很多事情,所以无法更改代码:(
-
可以给我们画一张你想要达到的目标吗?没有视觉表示很难分辨。
标签: javascript jquery html html-table