Сообщение от 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;
}
});
}