2016-07-26 67 views
0

我无法尝试对动态创建的html表格进行排序。我用玉/帕格创建它。我正在尝试使用这里找到的sorttable.js脚本http://www.kryogenix.org/code/browser/sorttable/。我对html/javascript仍然很陌生。所以,如果有一些明显的原因,为什么它不工作可以请人指出?使用sorttable.js无法排序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> 

的目标是有它所以当我点击它按该列排序表头生成的HTML代码。

回答

0

在你的代码执行时间:

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()"> 
+0

或者您可以尝试将您的脚本块移动到您的声明表下,但这不是最好的,最明显的解决方案。 – jusopi

+0

尝试两个,仍然没有运气:\ – user2770808

+0

适合我(即被称为onload和表不被定义)http://codepen.io/jusopi/pen/pbKymd – jusopi

1

请原谅,如果这是已经知道...但 脚本标签只要浏览器遇到它就会被读取和执行。你有没有尝试把脚本标签放在你的表格后面?