【问题标题】:Cannot read property length of undefined无法读取未定义的属性长度
【发布时间】:2011-11-01 18:34:07
【问题描述】:

我试图简单地检查我是否有一个空的输入文本框,但是当我在 Chrome 中运行它时出现此错误:

未捕获的类型错误:无法读取未定义的属性“长度”。

这就是我的做法。我检查 DOM 准备情况,然后调用该函数:

function walkmydog() {
    //when the user starts entering                                                                                                                                                
    if(document.getElementById('WallSearch').value.length == 0) {
        alert("nothing");
    }
}

if (document.addEventListener) {
    document.addEventListener("DOMContentLoaded", walkmydog, false);
}

【问题讨论】:

  • 能否附上你的HTML相关部分?
  • 你确定WallSearchinput元素的ID吗?如果是,您将不会收到该错误:jsfiddle.net/fkling/x9Vf2
  • 如何检查 DOM 准备情况?
  • 我已经添加了用于检查 DOM 准备情况的代码,并且我确信 id 是“WallSearch”。该函数被调用但出错
  • 该错误意味着getElementById('WallSearch')返回的任何元素都没有value属性。 每个 表单字段都有一个value 属性,因此它似乎没有返回正确的元素。请发布您的 HTML 或创建 jsfiddle.net 演示。

标签: javascript dom dom-events


【解决方案1】:

输入的 id 似乎不是WallSearch。也许你对nameid 感到困惑。它们是两个不同的属性。 name 用于定义发布值的名称,而id 是 DOM 内元素的唯一标识。

另一种可能性是您有两个具有相同 id 的元素。浏览器会选择其中任何一个(可能是最后一个,也可能是第一个)并返回一个不支持 value 属性的元素。

【讨论】:

    【解决方案2】:

    或许,你可以先判断一下 DOM 是否真的存在,

    function walkmydog() {
        //when the user starts entering
        var dom = document.getElementById('WallSearch');
        if(dom == null){
            alert('sorry, WallSearch DOM cannot be found');
            return false;    
        }
    
        if(dom.value.length == 0){
            alert("nothing");
        }
    }
    
    if (document.addEventListener){
        document.addEventListener("DOMContentLoaded", walkmydog, false);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-10
      • 2020-09-14
      • 2018-01-11
      • 2020-12-23
      • 2020-06-12
      • 2014-09-30
      相关资源
      最近更新 更多