企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 动态创建标记 - <a href="#no1">7.1 一些传统方法</a> - <a href="#no2">7.2 DOM方法</a> - <a href="#no3">7.3 重回图片库</a> - <a href="#no4">7.4 Ajax</a> - <a href="#no5">7.5 小结</a> **本章内容** - 传统技术:`document.write`和`innerHTML`。 - 深入剖析DOM方法:`createElement`、`createTextNode`、`appendChild`和`insertBefore`。 ##<a name="no1">7.1 一些传统方法</a> ###7.1.1 document.write > `document`对象的`write()`方法可以方便快捷的把字符串插入到文档里。 ###7.1.2 innerHTML 属性 > `innerHTML`属性可以用来读、写某给定元素里的`HTML`内容。 ##<a name="no2">7.2 DOM方法</a> ###7.2.1 ceartElement 方法 **创建元素** document.createElement(nodeName) ###7.2.2 appendChild 方法 > 把节点插入某个文档的节点树。 parent.appendChild(child) ###7.2.3 createTextNode 方法 > 创建一个文本节点 document.createTextNode(text) 例: window.onload = function(){ var para = document.createElement('p'); var txt = document.createTextNode('Hello world'); para.appendChild(txt); var testdiv = document.getElementById('testdiv'); testdiv.appendChild(para); } ###7.2.4 一个更复杂的组合 ##<a name="no3">7.3 重回图片库</a> ###7.3.1 在已有元素前插入一个新元素 > DOM提供了名为 `insertBefore()`方法,这个方法将把一个元素插入到一个现有元素的前面。 parentElement.insertBefore(newElement, targetElement); ###7.3.2 在现有方法后插入一个新元素 > 既然有`insertBefore`方法,是不是也有一个对应的`insertAfter()`方法?很可惜,DOM没有提供这个方法。不过咱们可以自己编写一个。 **1.编写 insertAfter函数** function insertAfter(newElement, targetElement){ var parent = targetElement.parentNode; if(parent.lastChild == targetElement){ parent.appendChild(newElement); }else{ parent.insertBefore(newElement, targetElement.nextSibling); } } 这个函数用到了以下DOM方法和属性: - parentNode 属性 - lastChild 属性 - appendChild 方法 - insertBefore 方法 - nextSibling 属性 # 1. 首先,这个函数有两个参数:一个是将被插入的新元素,另一个是目标元素。这两个参数通过变量 `newElement`和`targetElement`被传递到这个函数:`function insertAfter(newElement, targetElement)` 2. 把目标元素的`parentNode`属性值保存到变量`parent`里:`var parent = targetElement.parentNode` 3. 检查目标元素是否为`parent`的最后一个子元素。`if(parent.lastChild == targetElement)` 4. 如果是,就用`appendChild`方法把新元素追加到`parent`元素上。`parent.appendChild(newElement);` 5. 如果不是,就把新元素插入到目标元素和目标元素的下一个兄弟元素之间。目标元素的下一个兄弟元素即目标元素的`nextSibling`属性。用`insterBefore`方法把新元素插入到目标元素的下一个兄弟元素之前:`parent.insertBefore(newElement, targetElement.nextSibling);` **2.使用insertAfter函数** > 略 ###7.3.3 图片库二次改进版 > 略 ##<a name="no4">7.4 Ajax</a> > 略 ###7.4.1 XMLHttpRequest 对象 ###7.4.2 渐进增强与 Ajax ###7.4.3 Hijax ##<a name="no5">7.5 小结</a> - `document.write` 方法 - `innerHTML` 属性 - `createElement` 方法 - `createTextNode` 方法 - `appendChild` 方法 - `insterBefore` 方法