web-dev-qa-db-fra.com

Impossible de lire la longueur de la propriété d'undefined

J'essaie simplement de vérifier si j'ai une zone de texte d'entrée vide mais j'obtiens cette erreur lorsque je l'exécute dans Chrome:

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

Voici comment je le fais. Je vérifie l'état de préparation du DOM, puis j'appelle la fonction.

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

L'identifiant de l'entrée semble ne pas être WallSearch. Vous confondez peut-être que name et id. Ce sont deux propriétés différentes. name est utilisé pour définir le nom par lequel la valeur est publiée, tandis que id est l'identification unique de l'élément à l'intérieur du DOM.

Une autre possibilité est que vous ayez deux éléments avec le même identifiant. Le navigateur choisira l'un d'entre eux (probablement le dernier, peut-être le premier) et retournera un élément qui ne prend pas en charge la propriété value.

10
GolezTrol

peut-être, vous pouvez d'abord déterminer si le DOM existe vraiment,

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