<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<body>
<ul id='a'>
</ul>
<ul id='b'>
</ul>
</body>
<script>
const moving1 = `<li>a</li>`;
document.querySelector('#a').insertAdjacentHTML('afterbegin',moving1)
const moving2 = document.createElement('li')
moving2.innerHTML = 'b';
document.querySelector('#b').insertAdjacentElement('afterbegin',moving2)
console.log(typeof moving1,typeof moving2)
</script>
</html>
moving1은
insertAdjacentHTML
을 사용하였고
moving2는insertAdjacentElement
를 사용하였다.
해당 결과는
이와 같다.
콘솔에서는 각각 string object
로 나타난다.
string 형태를 받아오는 역할을 한다. 즉, 리터럴 형태에 유용하게 쓰인다.
<li>a</li>
이미 만들어진 어떤 Element 형태를 가져오는 역할을 한다.
그래서 createElement로 가져온 것의 적용하지
<li id='c'>a</li>가 body태그가 존재하는 시점에서
document.querySelector('#b').insertAdjacentElement('afterbegin',document.querySelector('#c'))
document.querySelector('#b').insertAdjacentHTML('afterbegin',document.querySelector('#c'))
둘중 어떤것이 맞을까?
정답은 querySelector를 통해 Dom 객체 형태를 가져온것이므로 Element형태인
insertAdjacentElement
를 이용해야한다.