首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用sorttable.js对html表进行排序

无法使用sorttable.js对html表进行排序
EN

Stack Overflow用户
提问于 2016-07-27 03:04:43
回答 2查看 1.2K关注 0票数 0

我在尝试对动态创建的html表进行排序时遇到了问题。我使用jade/pug创建它。我正在尝试使用在http://www.kryogenix.org/code/browser/sorttable/中找到的sorttable.js脚本。我对html/javascript还是个新手。因此,如果有一些明显的原因,为什么它不工作,可以有人指出它吗?

下面是从模板生成的一些html代码

代码语言:javascript
复制
<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>   

这样做的目的是,当我单击标题时,它会按该列对表进行排序。

EN

回答 2

Stack Overflow用户

发布于 2016-07-27 03:24:53

如果这已经是known...but,请原谅,每当浏览器遇到脚本标记时,它都会被读取并执行。你有没有试过把脚本标记放在你的表后?

票数 1
EN

Stack Overflow用户

发布于 2016-07-27 03:22:28

在您的代码执行时:

代码语言:javascript
复制
var newTableObject = document.getElementById(tbl)
sorttable.makeSortable(newTableObject)

您的表尚未呈现,因此不可用。因此,您将把undefined传递给sorttable.makeSortable方法。您可以通过在获取元素后添加跟踪语句来进行测试:

代码语言:javascript
复制
var newTableObject = document.getElementById(tbl)
console.log(newTableObject)

您应该在您的表呈现之后等待触发此代码。如下所示:

代码语言:javascript
复制
onLoad = function(){
    var newTableObject = document.getElementById(tbl)
    sorttable.makeSortable(newTableObject)
}

并像这样声明:

代码语言:javascript
复制
// using jQ
$(document).ready( onLoad())

或者用于普通的JS

代码语言:javascript
复制
<body onload="onload()">
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38597964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档