Uncaught TypeError: Cannot read property 'tabs' or '' of undefined

    在使用easyUI做项目时,会使用到它的样式类,但是在使用的时候会出现一些莫名的错误:

比如:

看到报错的地方不认识,就觉得应该是使用的方法有问题。于是去看了下源码,它定义的方法也真的是挺无语的:

我们来看看_376是怎么定义的呢:

似乎我们看到了.tabs,控制台的错误提示也确实是property is undefined的,undefined出现的原因就那么几种,

  1. 对象中没有这个属性,或者你没有定义这个变量,就直接来拿使用
  2. 你没有定义这个对象,最常见的是没有var data = {};而你就直接使用data.property = "'; 等
似乎从这个方法里面我们还看不出来什么,那就需要看一下这个_37a是什么东西

function _376(_37a, _37b, _37c) {
        var tabs = $.data(_37a, "tabs").tabs;
        var tab = null;
        if (typeof _37b == "number") {
            if (_37b >= 0 && _37b < tabs.length) {
                tab = tabs[_37b];
                if (_37c) {
                    tabs.splice(_37b, 1);
                }
            }
        } else {
            var tmp = $("<span></span>");
            for (var i = 0; i < tabs.length; i++) {
                var p = tabs[i];
                tmp.html(p.panel("options").title);
                if (tmp.text() == _37b) {
                    tab = p;
                    if (_37c) {
                        tabs.splice(i, 1);
                    }
                    break;
                }
            }
            tmp.remove();
        }
        return tab;
    };

一点一点往上找,我们会看到:

     




在上面的方法中我们可以看到这个:div.tabs-header 这个样式,于是我们就可以猜一下,是不是DOM元素没有

这个东西,才导致一系列的undefined呢,我把div中的class="easyui-tabs" 样式去掉:


通过审查元素,可以看到,确实没有,它不像tree这个组件,你只要定义个div并绑定id就行,而这个不行。

然后我们把class样式加上后,发现确实是这样的:


猜你喜欢

转载自blog.csdn.net/chenqk_123/article/details/78773320