无法读取未定义的属性长度

时间:2011-08-23 08:54:01

标签: javascript dom javascript-events

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

Uncaught TypeError: Cannot read property 'length' of undefined.

以下是我如何去做。我检查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);
}

2 个答案:

答案 0 :(得分:9)

输入的ID似乎不是WallSearch。也许你会混淆nameid。它们是两个不同的属性。 name用于定义发布值的名称,而id是DOM中元素的唯一标识。

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

答案 1 :(得分:4)

或许,你可以先确定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);
}