对DataTables使用Bootstrap integration时,我在控制台中看到以下错误:
Uncaught TypeError: Cannot read property 'defaults' of undefined (dataTables.bootstrap.js:20)
这会导致分页控件没有样式。
我可以看到在工厂初始化时,需要运行以下代码:
factory( jQuery, jQuery.fn.dataTable );
但是,jQuery.fn.dataTable
正在返回undefined
。
答案 0 :(得分:153)
问题是在您调用此方法时未定义dataTable
。
确保以正确的顺序加载.js
个文件:
<script src="/Scripts/jquery.dataTables.js"></script>
<script src="/Scripts/dataTables.bootstrap.js"></script>
答案 1 :(得分:2)
我得到了同样的错误,我使用了laravel 5.4和webpack,这里是package.json:
{
...
...
"devDependencies": {
"jquery": "^1.12.4",
...
...
},
"dependencies": {
"datatables.net": "^2.1.1",
...
...
}
}
我必须将jquery
和datatables.net
个npm包移到"dependencies": {}
中的"devDependencies": {}
或package.json
中的{
...
...
"devDependencies": {
"jquery": "^1.12.4",
"datatables.net": "^2.1.1",
...
...
}
}
之一,并且错误消失了,之后:
public void saveId(){
FacesContext fc = FacesContext.getCurrentInstance();
Map<String,String> params = fc.getExternalContext().getRequestParameterMap();
String tempID = params.get("id");
id = Integer.parseInt(tempID) - 1;
System.out.println("ForwardID");
System.out.println(getId());
try {
fc.getExternalContext().dispatch("infopage.xhtml");
} catch (IOException ex) {
Logger.getLogger(SnowboardBean.class.getName()).log(Level.SEVERE, null, ex);
}
}
我希望有所帮助!
答案 2 :(得分:0)
var datatable_jquery_script = document.createElement("script");
datatable_jquery_script.src = "vendor/datatables/jquery.dataTables.min.js";
document.body.appendChild(datatable_jquery_script);
setTimeout(function(){
var datatable_bootstrap_script = document.createElement("script");
datatable_bootstrap_script.src = "vendor/datatables/dataTables.bootstrap4.min.js";
document.body.appendChild(datatable_bootstrap_script);
},100);
我使用setTimeOut确保datatables.min.js首先加载。我检查了每个瀑布的加载情况,bootstrap4.min.js总是首先加载。
答案 3 :(得分:0)
<script src="https://cdn.datatables.net/1.10.22/js/jquery.dataTables.min.js"defer</script>
在您的Script标记的末尾添加Defer,它对我有用(;
一切都必须以正确的顺序加载(: