Вы не можете использовать document.write
после первоначального анализа страницы. К счастью, нет особой причины.
Если у вас есть элемент на странице, и вы хотите добавить к нему, вы можете сделать это:
var parent = document.getElementById('theId');
var p = document.createElement('p');
p.innerHTML = "This is the <em>new content</em>.";
parent.appendChild(p);
Живой пример (Это не обязательно должен быть элемент p
, это может быть div
или span
или все, что является допустимым дочерним элементом родительского элемента.)
Обратите внимание, что если вы просто хотите добавить в конец документа (относительно редко, но эй), вы можете просто использовать document.body
вместо parent
:
var p = document.createElement('p');
p.innerHTML = "This is the new content.";
document.body.appendChild(p);
Аналогично, если вы хотите заменить содержимое элемента, просто получите ссылку на него (использование getElementById
- это удобный способ, если элемент имеет идентификатор, но есть и другие способы) и обновите его, а не добавляйте к нему:
var target = document.getElementById('targetId');
target.innerHTML = "This is the <em>updated content</em>.";
Подробнее re document.write
: document.write
фактически записывает в поток HTML, анализируемый анализатором HTML. Естественно, когда рендеринг страницы завершен, поток HTML больше не анализируется. Но описанные выше методы DOM доступны для манипулирования содержимым страницы после ее отображения.
Не по теме : манипулирование DOM и поиск DOM (поиск элементов для обновления) упрощаются (и, в частности, упрощаются в кросс-браузерном режиме), если вы используете библиотеку, такую как jQuery , Прототип , YUI , Закрытие или любой из нескольких других , которые будут иметь синтаксический сахар и обходные пути для эксцентричности браузера и т. Д.