2010-03-13 3 views
7

Я хочу добавить элемент с JavaScript.Добавить элемент в DOM с JavaScript

У меня есть следующий код:

var collection = document.getElementsByTagName('body'); 
var a = document.createElement('div'); 
a.innerHTML = 'some text'; 
collection.item(0).firstChild.appendChild(a); 

и простой HTML:

<html> 
    <head></head> 
<body> 

</body> 
</html> 

Где ошибка?

ответ

20

Это должно делать то, что вы ищете:

var newdiv = document.createElement("DIV"); 
newdiv.appendChild(document.createTextNode("some text")); 
document.body.appendChild(newdiv); 

Во-первых, необходимо создать элемент по document.createElement. Чтобы установить его текстовое содержимое, вы должны иметь «текстовый узел», обертывающий ваш текст. Итак, вы сначала создаете такой текстовый узел, а затем добавляете его как (единственный) к вашему новому объекту.

Затем добавьте вновь созданный элемент DIV в структуру DOM. Вам не нужно искать элемент BODY с getElementsByTagName(), так как он существует как свойство объекта document.

+0

, но это был единственный пример, когда я хочу getElementsByTagName («» АБВ) и создать элемент createElement («ABC») и установите innerHTML = «text» .... Как может Я делаю это? – john

+0

Просто добавляя несколько элементов, вы всегда должны идти с 'documentFragment'. 'documentFragment' действует как промежуточная область, где вы неоднократно добавляете элементы и, наконец, добавляете их в' DOM'. Повторное добавление элементов в 'DOM' приведет к переполнению всего документа. Смотрите это: http://ejohn.org/blog/dom-documentfragments/ –

4

Ваш код не работает, потому что в то время, когда вы пытаетесь вставить этот новый div, тег тела пуст, и поэтому нет первой вещи, чтобы добавить что-либо. Измените последнюю строку:

collection.item(0).appendChild(a); 
Смежные вопросы