Показать сообщение отдельно
  #2 (permalink)  
Старый 22.12.2013, 14:13
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Nailya
firstChild, в учебники пишут, что он возвращает первый дочерний элемент
Нет, это не так. Он возвращает первый дочерний узел.
А элемент - это firstElementChild, но он отсутствует в IE8.

<body>
     
    <p>This is a <i>simple</i> document.</p>
    <script> alert(document.body.firstElementChild.outerHTML)</script>
</body>


Можно еще использовать children[0], он по идее вернет первый элемент, но в IE, если первым услом будет комментарий - он и будет возвращен (это неправильное поведение), но на практике такое редкость.

Если нужна поддержка IE8, то можно использовать такой костыль:
if (!("firstElementChild" in document.documentElement)) {
    Object.defineProperty(Element.prototype, "firstElementChild", {
        get: function() {
            var element = this.firstChild;
            while (element && element.nodeType != 1) {
                element = element.nextSibling;
            }
            return element;
        }
    });
}
__________________
В личку только с интересными предложениями
Ответить с цитированием