当使用list.js和tabletop作为从Gdoc中获取的可排序表时,我得到错误:“未捕获的TypeError:无法在list.js的第一行读取未定义的属性'childNodes'。
因为我工作的网站只能上传JS,所以我需要使用js或jquery编写所有的html,所以它有点不稳定。我认为错误是由于我拥有一切的顺序而被抛出,但我试图改变一切无济于事。除了排序之外,一切都在起作用。
谢谢!
HTML文件
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="styles.css">
<script type="text/javascript" src="list.js-master/dist/list.min.js"></script>
<script type="text/javascript" src="src/tabletop.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</head>
<body>
<div id="tablesetter"></div>
</body>
<script type="text/javascript">
var url = 'url to gdoc here';
$(document).ready( function(){
Tabletop.init( {key: url, callback: showInfo, parseNumbers: true} )})
function showInfo(data, tabletop){
$("#tablesetter").append('<h2>Table Working</h2><table><thead><th class="sort" data-sort="university">University</th><th class="sort" data-sort="no">Billionaires</th><th class="sort" data-sort="no2">Billionaires Rank</th><th class="sort" data-sort="rank">U.S. News Rank</th></thead><tbody class="list"></tbody></table>');
$.each(tabletop.sheets("Sheet1").all(), function(i, cat){
var htmltable = $('<tr><td class="university">' + cat.university + '</td>');
htmltable.append('<td class="no">' + cat.numberofbillionaires + '</td>');
htmltable.append('<td class="no2">' + cat.rankedbybillionaires + '</td>');
htmltable.append('<td class="rank">' + cat.usnewsranking + '</td></tr>');
htmltable.appendTo("tbody");
})
}
</script>
<script type="text/javascript" src="options.js"></script>
</html>
JS档案
var options = {
valueNames: [ 'university', 'no' , 'no2' , 'rank']
};
var userList = new List('tablesetter', options);
答案 0 :(得分:0)
如果你看一下这篇文章,我确定你错过了list.js正常运行的一些最低要求。尝试使用id和类“search”动态添加输入以及其他类。如果这有帮助,请告诉我。
答案 1 :(得分:0)
var userList = new List('tablesetter', options);
应该在dom具有list
类的元素时执行;因为在问题的代码中list
类默认为list"
,所以这样的元素应该是<tbody class="list">
,只有在{{1}时才将其附加到#tablesetter
}函数从Google接收数据。
我们确保showInfo
语句在var userList = new List('tablesetter', options)
函数之后(即:末)执行;换句话说,将showInfo
从var userList = new List('tablesetter', options);
中移到options.js
函数右右括号之前。
showinfo
尝试list.js
时,问题代码中的是:
并且init()
定义了list.list
函数时,undefined
仍然是list.js
:
使用建议的修复程序,在getItemSource()
的dom类似于:
并且在定义它的var userList = new List('tablesetter', options);
函数时getItemSource()
可以使用list.list
: