又是你~
重點
不論是「新增」或「刪除」,都必須透過「父元素」來操作。
換句話說就是直接對元素使用的話會出錯,請務必記住這一點。
新增元素
插到最前面 prepend
備註:如果要新增多個可以 prepand(elem1, elem2)
1
| <div class="block">yoyoyo</div>
|
1 2 3 4 5 6 7 8
| const parent = document.querySelector('.block')
const newElement = document.createElement('div')
newElement.innerText = 'R~Lo~Ha~'
parent.prepend(newElement)
|
Output:
1 2 3 4
| <div class="block"> <div>R~Lo~Ha~</div> yoyoyo </div>
|
插到最後面 appendChild
1
| <div class="block">yoyoyo</div>
|
1 2 3 4 5 6 7 8
| const parent = document.querySelector('.block')
const newElement = document.createElement('div')
newElement.innerText = 'R~Lo~Ha~'
parent.appendChild(newElement)
|
Output:
1 2 3 4
| <div class="block"> yoyoyo <div>R~Lo~Ha~</div> </div>
|
一次新增多個元素
突然發現有個 append
方法可以用:
1 2 3
| <div class="block"> <p>yoyoyo</p> </div>
|
1 2 3 4 5 6 7 8 9 10
| const parent = document.querySelector('.block')
const elem1 = document.createElement('div') elem1.innerText = 'elem1'
const elem2 = document.createElement('div') elem2.innerText = 'elem2'
parent.append(elem1, elem2)
|
Output:
1 2 3 4 5
| <div class="block"> <p>yoyoyo</p> <div>elem1</div> <div>elem2</div> </div>
|
插到父元素下的某個子元素前面 insertBefore
1 2 3
| <div class="parent"> <div class="child">child2</div> </div>
|
1 2 3 4 5 6
| const div = document.createElement('div')
div.innerText = 'child1'
document.querySelector('.parent').insertBefore(div, document.querySelector('.child'))
|
Output:
1 2 3 4
| <div class="parent"> <div>child1</div> <div class="child">child2</div> </div>
|
刪除元素
方法一 removeChild
1 2 3
| <div class="block"> <p class="child">yoyoyo</p> </div>
|
1 2 3 4 5 6
| const parent = document.querySelector('.block')
const deleteElement = document.querySelector('.child')
parent.removeChild(deleteElement)
|
Output:
1
| <div class="block"></div>
|
方法二 remove
1 2 3
| <div class="block"> <p class="child">yoyoyo</p> </div>
|
JavaScript:
1 2 3 4
| const deleteElement = document.querySelector('.child')
deleteElement.remove()
|
補充-新增文字節點
如果你只想新增文字,但又不想用 innerText
,因為會整筆覆寫掉。
這時候你可以改用 createTextNode
來處理:
1
| <div class="block">yoyoyo</div>
|
1 2 3 4 5 6
| const parent = document.querySelector('.block')
const newText = document.createTextNode('a new text')
parent.appendChild(newText)
|
Output:
1
| <div class="block">yoyoyo a new text</div>
|