2011-08-23 23 views
12

Estoy tratando de comprobar simplemente si tengo un cuadro de texto de entrada vacío pero me sale este error cuando ejecuto esto en cromo:No se puede leer la longitud característica de indefinido

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

Aquí es cómo van haciendo sobre él . Compruebo la disponibilidad de DOM y luego llamo a la función.

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

¿Se puede adjuntar la parte pertinente de su HTML? –

+1

¿Estás seguro de que 'WallSearch' es la ID del elemento' input'? Si lo fuera, no obtendría ese error: http://jsfiddle.net/fkling/x9Vf2/ –

+0

¿Cómo verifica la disponibilidad de DOM? – bjornd

Respuesta

7

La identificación de la entrada parece no es WallSearch. Tal vez estás confundiendo ese name y id. Son dos propiedades diferentes. name se usa para definir el nombre con el que se publica el valor, mientras que id es la identificación única del elemento dentro del DOM.

Otra posibilidad es que tenga dos elementos con la misma identificación. El navegador elegirá cualquiera de estos (probablemente el último, quizás el primero) y devolverá un elemento que no admite la propiedad value.

3

tal vez, puede determinar en primer lugar si existe realmente es el 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); 
} 
Cuestiones relacionadas