我在尝试对动态创建的html表进行排序时遇到了问题。我使用jade/pug创建它。我正在尝试使用在http://www.kryogenix.org/code/browser/sorttable/中找到的sorttable.js脚本。我对html/javascript还是个新手。因此,如果有一些明显的原因,为什么它不工作,可以有人指出它吗?
下面是从模板生成的一些html代码
<html>
<head>
<script src="/path/to/sorttable.js"></script>
<style>
th.clickable:hover
{
color:green
}
th, td
{
padding:5px;
}
th.clickable
{
cursor: pointer;
}
</style>
</head>
<body>
<script>
var newTableObject = document.getElementById(tbl)
sorttable.makeSortable(newTableObject)
</script>
<table class="sortable" id="tbl">
<tr>
<th class="clickable">id</th>
<th class="clickable">value</th>
</tr>
<tr>
<td>100</td>
<td>100</td>
</tr>
<tr>
<td>200</td>
<td>200</td>
</tr>
</table>
</body>
</html> 这样做的目的是,当我单击标题时,它会按该列对表进行排序。
发布于 2016-07-27 03:24:53
如果这已经是known...but,请原谅,每当浏览器遇到脚本标记时,它都会被读取并执行。你有没有试过把脚本标记放在你的表后?
发布于 2016-07-27 03:22:28
在您的代码执行时:
var newTableObject = document.getElementById(tbl)
sorttable.makeSortable(newTableObject)您的表尚未呈现,因此不可用。因此,您将把undefined传递给sorttable.makeSortable方法。您可以通过在获取元素后添加跟踪语句来进行测试:
var newTableObject = document.getElementById(tbl)
console.log(newTableObject)您应该在您的表呈现之后等待触发此代码。如下所示:
onLoad = function(){
var newTableObject = document.getElementById(tbl)
sorttable.makeSortable(newTableObject)
}并像这样声明:
// using jQ
$(document).ready( onLoad())或者用于普通的JS
<body onload="onload()">https://stackoverflow.com/questions/38597964
复制相似问题