Получение первого элемента из <body>затем insertBefore () - PullRequest
8 голосов
/ 03 декабря 2010

Я занимаюсь этим уже несколько часов и собираюсь начать вырывать волосы. По сути, мне нужно получить первый элемент, который появляется в теле, а затем вставить еще один элемент перед ним.

Я попробовал следующее, чтобы получить первый элемент без успеха (неопределенный или ноль)

window.document.body.firstChild

document.getElementsByTagName("body").firstChild

document.getElementsByTagName("body")[0].firstChild

window.document.documentElement.childNodes[1].childNodes[0]

И целый ряд смешанных и согласованных попыток предыдущих фрагментов. Я также попытался просто получить тело затем appendChild (), но безуспешно.

Любая помощь здесь приветствуется. Заранее спасибо.

Ответы [ 3 ]

14 голосов
/ 03 декабря 2010

Да, document.body.firstChild правильно. Вероятно, вы упускаете из виду тот факт, что insertBefore является методом родительского элемента, и он принимает новый элемент перед существующим. Например:

var addedElement = document.createElement('p');
addedElement.appendChild(document.createTextNode('Hello, world!'));

var body = document.body;
body.insertBefore(addedElement, body.firstChild);
3 голосов
/ 03 декабря 2010

Вы хотите что-то вроде этого:

var first = document.body.children[0];
var beforeEle = document.createElement("div");
beforeEle.innerHTML = "I'm the first element in the body!";
document.body.insertBefore(beforeEle, first);
1 голос
/ 08 октября 2017

Самое элегантное решение для добавления элемента к телу, которое я мог бы создать, это однострочный:

document.body.insertBefore(element, dom.document.body.firstChild)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...