web-dev-qa-db-ja.com

未定義のプロパティの長さを読み取れません

空の入力テキストボックスがあるかどうかを単純に確認しようとしていますが、これを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);
}
15
Praveen

入力のIDはWallSearchではないようです。 nameidを混同しているのかもしれません。これらは2つの異なるプロパティです。 nameは値の投稿に使用される名前を定義するために使用され、idはDOM内の要素の一意のIDです。

他の可能性は、同じIDを持つ2つの要素があることです。ブラウザはこれらのいずれか(おそらく最後、おそらく最初)を選択し、valueプロパティをサポートしない要素を返します。

10
GolezTrol

おそらく、最初に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);
}
4
Lee