2011-08-23 9 views
12

Staram się po prostu sprawdzić, czy mam pola pustego tekstu wejściowego, ale pojawia się ten błąd, gdy uruchomię to w chrome:nie można odczytać długość własności undefined

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

Oto jak ja go o to robi . Sprawdzam gotowość DOM, a następnie wywołuje funkcję.

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

Czy należy dołączyć odpowiedni fragment kodu HTML? –

+1

Czy jesteś pewien, że 'WallSearch' jest identyfikatorem elementu' input'? Jeśli tak, to nie dostaniesz tego błędu: http://jsfiddle.net/fkling/x9Vf2/ –

+0

Jak sprawdzić gotowość DOM? – bjornd

Odpowiedz

7

Identyfikator wejścia wydaje się nie być WallSearch. Być może mylisz to, że name i id. Są to dwie różne właściwości. name służy do definiowania nazwy, pod którą wartość jest publikowana, natomiast id jest unikalną identyfikacją elementu wewnątrz DOM.

Inną możliwością jest to, że masz dwa elementy o tym samym id. Przeglądarka wybierze jedną z nich (prawdopodobnie ostatnią, być może pierwszą) i zwróci element, który nie obsługuje właściwości value.

3

być może, można najpierw określić, czy DOM jest naprawdę istnieje,

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); 
} 
Powiązane problemy