<div name='i am div'></div>
element.setAttribute('data','2020')
element.getAttribute('data') // 2020
NamedNodeMap 对象是即时的(live),所以,若是它内部包含的对象发生改变的话,该对象会自动更新到最新的状态。
//<div name='i am div' id='app' class='main'></div> // 获取属性集合 let atr = document.getElementsByTagName('div')[0].attributes; // 获取属性的两种方式,经过下标,和 属性名获取 let name = arr[0].value; // i am div /* 这两种和上面获取到的值同样,暂时不知道有啥区别 let name = arr[0].nodeValue; let name = arr[0].textContent; */ let n = arr['name'].value; i am div
优势:javascript
缺点:html
innerHTML = innerHTML + 'html'
,旧的内容仍然会被替换掉;整个innerHTML内容被从新解析并构建成元素,所以它的速度要慢得多;【译文】在JavaScript里面使用InnerHTML的缺点是什么
insertAdjacentElement()
(它不只会将引用的元素添加到指定的位置,并且还会将元素从文档中的原始位置移除。这是一种在 DOM 中移动元素的简单方法) 和 insertAdjacentText()
。insertAdjacentText 和 innerText 相识类似,都是插入纯文本,都会把 HTML 解析为 文本。三个方法的都是有两个参数。position 和 ele ( insertAdjacentText 方法 是 text )java
element.insertAdjacentHTML(position, ele)
node
position: 表示相对于所述位置element; 必须是如下字符串之一:数组
insertAdjacentElement()
来讲 ,参数能够是 元素引用。insertAdjacentText()
是 文本字符串。<h3>insertAdjacentElement</h3> <div> <p style="border:2px solid red">我是 p 标签</p> </div> <script type="text/javascript"> let p = document.getElementsByTagName('p')[0]; let ht = `<p>beforebegin,插入 HTML</p>`; p.insertAdjacentHTML('beforebegin',ht); p.insertAdjacentHTML('afterend',`<p>afterend,插入 HTML</p>`); p.insertAdjacentHTML('afterbegin',`<p>afterbegin,插入 HTML</p>`); p.insertAdjacentHTML('beforeend',`<p>beforeend,插入 HTML</p>`); // insertAdjacentElement(), 第二个参数能够是元素引用或 HTML 字符串 // 这是一种在 DOM 中移动元素的简单方法 let d = document.querySelector('div'); let h = document.querySelector('h3'); d.insertAdjacentElement('afterend',h) </script>
MDN
JavaScript之DOM-2 读取和修改节点信息(节点信息、元素的内容、属性)
8 个你不知道的 DOM 功能