document.write()不能用于 XHTML。它执行了 之后,页面已经完成了加载,除了写出一个 HTML 字符串之外什么也不做。
由于 HTML 的实际内存表示是 DOM,因此更新给定页面的最佳方法是直接操作 DOM。
实现这一点的方法是通过编程创建节点,然后将它们附加到 DOM 中的现有位置。对于[人为的]示例,假设我有一个维护“ header”的 ID属性的 div元素,那么我可以通过这样做来引入一些动态文本:
// create my text
var sHeader = document.createTextNode('Hello world!');
// create an element for the text and append it
var spanHeader = document.createElement('span');
spanHeader.appendChild(sHeader);
// grab a reference to the div header
var divHeader = document.getElementById('header');
// append the new element to the header
divHeader.appendChild(spanHeader);
在 DOM 准备好之后,有两种方法可以插入动态 HTML (假设我们要在 <div id="node-id"></div>中插入新的 HTML) :
在节点上使用 innerHTML:
var node = document.getElementById('node-id');
node.innerHTML('<p>some dynamic html</p>');
Using DOM methods:
var node = document.getElementById('node-id');
var newNode = document.createElement('p');
newNode.appendChild(document.createTextNode('some dynamic html'));
node.appendChild(newNode);
Using the DOM API methods might be the purist way to do stuff, but innerHTML has been proven to be much faster and is used under the hood in JavaScript libraries such as jQuery.
Note: The <script> will have to be inside your <body> tag for this to work.