【发布时间】:2017-02-02 23:01:10
【问题描述】:
我的表格分类器不工作。它说无法读取未定义行的属性。但我不确定它为什么这么说。使用 jquery.min.js 和 jquery.tablesorter.js。 我有一个名为tickettable 的表。我设置了 class="tablesorter"。我怀疑是因为我做桌子的方式。文档说它需要一个 tbody 和 thead。但我认为我没有 tbody,我不确定如何将数据附加到 tbody。我从会话中获取数据并将其附加到表格中。
<table id="tickettable" class="tablesorter">
<thead>
<th style="width: 300px;">TicketID</th>
<th style="width: 300px;">CUID</th>
<th style="width: 600px;">Detail</th>
<th style="width: 300px;">Severity</th>
<th style="width: 300px;">Status</th>
</thead>
<tbody>
</tbody>
</table>
<script>
function makeTicketTable() {
var ticketBody = document.getElementById("tickettable");
console.log("Ticket body was made.");
<c:forEach items="${ticketArray}" var="ticket">
console.log("Array process.");
var tr = document.createElement('TR');
var rowNum = document.getElementById("tickettable").rows.length;
tr.id = "r" + (rowNum - 1);
tr.className = "ModalD";
tr.title = "Click to edit: " + "${ticket.ticketid}";
ticketBody.appendChild(tr);
console.log("Click function made.");
var td = document.createElement('TD');
td.appendChild(document.createTextNode("${ticket.ticketid}"));
console.log("${ticket.ticketid}");
tr.appendChild(td);
var td1 = document.createElement('TD');
td1.appendChild(document.createTextNode("${ticket.CUID}"));
tr.appendChild(td1);
var td2 = document.createElement('TD');
var details = "${ticket.detail}";
details = details.substring(0, 50) + "...";
td2.appendChild(document.createTextNode(details));
tr.appendChild(td2);
var td3 = document.createElement('TD');
td3.appendChild(document.createTextNode("${ticket.severity}"));
tr.appendChild(td3);
var td4 = document.createElement('TD');
td4.appendChild(document.createTextNode("${ticket.status}"));
tr.appendChild(td4);
//used for details section
var hidIn = document.createElement('INPUT');
hidIn.id = "${ticket.ticketid}";
hidIn.type = 'hidden';
hidIn.value = "${ticket.detail}";
tr.appendChild(hidIn);
if ("${ticket.status}" == "Unassigned") {
tr.style.backgroundColor = "#ff4444";
tr.style.color = "#000000";
} else if ("${ticket.status}" == "Ongoing") {
tr.style.backgroundColor = "#ffbb33";
tr.style.color = "#000000";
} else if ("${ticket.status}" == "Completed") {
tr.style.backgroundColor = "#00C851";
tr.style.color = "#000000";
}
</c:forEach>
【问题讨论】:
-
请分享更多代码...无论哪种方式,在
</c:forEach>之后初始化tablesorter - 在添加所有行之后。 -
html 标签在 JavaScript 代码中的作用是什么?
function makeTicketTable() { ... <c:forEach items="${ticketArray}" var="ticket"> ... }返回Uncaught SyntaxError: Unexpected token <。请先修复基本错误。 -
确保您使用的是 Mottie 的 Tablesorter 分支,而不是 Christian Bach 的原版。没有不尊重 Christian,但 Mottie 增加了很多价值,包括修复了一个涉及
.trigger('update')的讨厌的小异步错误,该错误(是?)在 setTimeout 中实现。
标签: javascript jquery html tablesorter