我收到一个未捕获的类型错误:无法读取 jquery.main.js 上 null 的属性“长度”

I'm getting an Uncaught TypeError: Cannot read property 'length' of null on jquery.main.js

本文关键字:jquery main 读取 js 长度 属性 null 错误 一个 类型      更新时间:2023-09-26

此行:

this.textActive = this.focused || (this.element.value.length && this.element.value !== this.origValue);

正在生成此错误消息: 未捕获的类型错误: 无法读取 null 的属性"长度"

我不确定是什么原因造成的,但它正在制造问题。

refreshClasses: function() {
        this.textActive = this.focused || (this.element.value.length && this.element.value !== this.origValue);
        this.setStateClass(this.element, this.options.inputFocusClass,this.focused);
        this.setStateClass(this.elementParent, this.options.parentFocusClass,this.focused);
        this.setStateClass(this.labelFor, this.options.labelFocusClass,this.focused);
        this.setStateClass(this.element, this.options.inputActiveClass, this.textActive);
        this.setStateClass(this.elementParent, this.options.parentActiveClass, this.textActive);
        this.setStateClass(this.labelFor, this.options.labelActiveClass, this.textActive);
    },
    setStateClass: function(el,cls,state) {
        if(!el) return; else if(state) addClass(el,cls); else removeClass(el,cls);
    }
}

在您的代码中,您还没有考虑到 value 属性可能尚未定义,而不是检查长度,而是使用 typeof 检查类型:

this.textActive = this.focused || (typeof this.element.value == 'undefined' && this.element.value !== this.origValue);

我也抓住了自己。 @Nabil是对的。 如果值未定义,则自然不能具有长度。

this.textActive = this.focused || this.element.value && 
                      this.element.value !== this.origValue;

这对你不起作用吗?