扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
相信很多人都可能用过SortTable这个对Table元素进行排序的JS类库。
SortTable只需要设置Table的class就可以实现简单的应用。如果需要复杂引用,可以到下面的下载地址链接里面找到答案。这里就不再多说了。
下载地址:http://www.kryogenix.org/code/browser/sorttable/
可是如果在引用了SortTable同时用到了Asp.net Ajax.呵呵,这下绝对热闹。好像仇敌一样。
错误提示:
Sys.ArgumentTypeException: Object of type ‘Object’ cannot be converted to type ‘Array’
经过几个小时的努力,通过FireFox+FireBug的协力帮助,终于找到症结。主要是SortTable里面的forEach实现和Asp.net Ajax的forEach实现有冲突。
当然,要让Ajax.net Ajax里面的forEach失效可不是什么容易的事情。只能让SortTable里面的forEach失效了。通过多SortTable里面的 forEach进行分析,最终舍弃了SortTable里面的forEach实现并且将实现代码去除,然后将forEach改成了for实现。终于……和睦相处了。
当然还可以有更好的改法,就是将forEach的方法改名,但是发现SortTable引用的forEach也就那么一点,于是用for了。
有两处需要修改:
第一处:
//原始代码 // Array.forEach(document.getElementsByTagName('table'), function(table) { // if (table.className.search(/\bsortable\b/) != -1) { // sorttable.makeSortable(table); // } // }); // alert(document.getElementsByTagName('table').length); // //修改代码 for(i=0;i<document.getElementsByTagName('table').length;i++) { // alert(document.getElementsByTagName('table').length); table=document.getElementsByTagName('table')[i]; if (table.className.search(/\bsortable\b/) != -1) { sorttable.makeSortable(table); } }; |
第二处:
//原始代码 //forEach(theadrow.childNodes, function(cell) { // if (cell.nodeType == 1) { // cell.className = cell.className.replace('sorttable_sorted_reverse',''); // cell.className = cell.className.replace('sorttable_sorted',''); // } // }); //修改代码 for(i=0;i<theadrow.childNodes.length;i++) { var cell=theadrow.childNodes[i]; if (cell.nodeType == 1) { // an element cell.className = cell.className.replace('sorttable_sorted_reverse',''); cell.className = cell.className.replace('sorttable_sorted',''); } }; |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者