DataTables:未捕获的TypeError:无法读取属性'默认值'未定义的

时间:2014-10-02 16:29:50

标签: javascript twitter-bootstrap datatables

对DataTables使用Bootstrap integration时,我在控制台中看到以下错误:

Uncaught TypeError: Cannot read property 'defaults' of undefined (dataTables.bootstrap.js:20)

这会导致分页控件没有样式。

我可以看到在工厂初始化时,需要运行以下代码:

factory( jQuery, jQuery.fn.dataTable );

但是,jQuery.fn.dataTable正在返回undefined

4 个答案:

答案 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",
    ...
    ...
  }
}

我必须将jquerydatatables.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,它对我有用(;

一切都必须以正确的顺序加载(: