Подтвердить что ты не робот

Не удается прочитать длину свойства undefined

Я пытаюсь просто проверить, есть ли пустое текстовое поле ввода, но я получаю эту ошибку, когда я запускаю ее в 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);
}
4b9b3361

Ответ 1

Идентификатор ввода не соответствует WallSearch. Возможно, вы сбиваете с толку, что name и id. Это два разных свойства. name используется для определения имени, по которому опубликовано значение, а id - это уникальная идентификация элемента внутри DOM.

Другая возможность состоит в том, что у вас есть два элемента с одинаковым идентификатором. Браузер выберет любой из них (возможно, последний, может быть, первый) и вернет элемент, который не поддерживает свойство value.

Ответ 2

возможно, вы можете сначала определить, действительно ли 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);
}