Javascript не может найти элемент Div по имени - PullRequest
1 голос
/ 20 февраля 2009

Этот код удивил меня вчера, и мне любопытно, что происходит.

Если я ссылаюсь на элемент Div, который, как мне известно, находится на странице в Форме, даже копировать / вставлять точное имя, используя getElementsByName, следующий код не сможет его найти.

var coll = document.getElementsByName("txtState"); //coll will be null

Если я получу все теги Div на странице и переберу их, просматривая свойство name, я смогу найти правильный элемент Div.

var coll = document.getElementsByTagName("Div");
for (var i = 0; i < coll.length; i++) {
    var el= coll[i];
    if (el.name != null) {
        if (el.name.length > 0) {
            if (el.name == "txtState") {
                alert("Found");
            }
        }
    }
}

Итак, что случилось? Почему Javascript слеп к получению определенного элемента? Почему я должен перебирать коллекцию?

Ответы [ 2 ]

24 голосов
/ 20 февраля 2009

С здесь :

Прежде чем мы продолжим, мы должны развеять некоторую дезинформацию в нескольких книгах и в Интернете: вопреки тому, что некоторые говорили, не существует законного способа использовать атрибут name из таких тегов, как div или span , в соответствии со спецификациями W3C HTML 4.01. Вы должны ограничить использование этого атрибута такими тегами, как input, img, frame, iframe, form, map, param, meta, object, A, select, applet, textarea или button.

Таким образом, «имя» не является допустимым атрибутом для div, поэтому getElementsByName не будет работать.

2 голосов
/ 20 февраля 2009

Я всегда полагался на использование getElementById ('SomeId') и гарантировал, что свойство ID тега DIV установлено.

Попробуйте это с DIV, и это должно решить вашу проблему с JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...