<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 功能