2011-08-23 83 views
12

我想簡單地檢查,如果我有一個空的文本輸入框屬性的長度,但是當我在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); 
} 
+0

能否請附上您的HTML相關的部分? –

+1

你確定'WallSearch'是'input'元素的ID嗎?如果是這樣,你不會得到這個錯誤:http://jsfiddle.net/fkling/x9Vf2/ –

+0

你如何檢查DOM的準備情況? – bjornd

回答

7

輸入的id似乎不是WallSearch。也許你很困惑nameid。他們是兩個不同的屬性。 name用於定義值的發佈名稱,而id是DOM內元素的唯一標識。

其他可能性是,你有兩個具有相同ID的元素。瀏覽器會選擇其中的任何一個(可能是最後一個,也許是第一個),並返回一個不支持value屬性的元素。

3

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