웹브라우저의 코드 해석 과정에서 <script>
요소를 만나면 웹브라우저는 html해석을 멈추고 <script>
요소를 먼저 실행한다. <script>
추가하는 2가지 방법이 있다.
<head>
안쪽에 삽입하는 경우<body>
요소가 끝나기 전에 삽입하는 경우console.dir(XXX)
getElementById()
, getElementsByName()
, getElementsByTagName()
<div>
요소를 전부 조회하는 방법document.getElementsByTagName('div')
document.querySelectorAll('div')
html 화면
개발자도구 화면
.parentNode
<div>
요소 만들기document.createElement('div') //<div></div> const tweetDiv = document.createElement('div') // 변수를 선언하여 작업 결과를 할당 // 현재까지는 화면상에 변화 없음. 엘리먼트를 화면에서 확인하기 위해서는 APPEND 작업을 통해 트리구조에 연결하는 작업이 필요
document.body.append(tweetDiv);
// 화면 상에 변화는 없지만 개발자도구 Elements탭에서는 새로 생성된
div
가 확인됨
const container = document.querySelector('#container') const tweetDiv = document.createElement('div') container.append(tweetDiv)
container의 마지막 자식요소로 tweetDiv 추가
"div"
)"#tweetList"
)".tweet"
)const oneTweet = document.querySelector('.tweet') // querySelector로 클래스 이름이 tweet인 html요소 조회 const tweets = document.querySelectorAll('.tweet') // querySelectorAll로 클래스 이름이 tweet인 **모든** html요소를 조회
cf) get
메소드와 DOM조회 메서드는 동일
const getOneTweet = document.getElementById('container')
const queryOneTweet = document.querySelector('#container')
console.log(getOneTweet === queryOneTweet) // true
textContent
const oneDiv = document.createElement('div'); console.log(oneDiv) // <div></div> oneDiv.textContent = 'dev'; console.log(oneDiv) // <div>dev</div> oneDiv.classList.add('tweet')// 클래스명 추가 console.log(oneDiv) //<div class='tweet'>dev</div> const container = document.querySelector('#container') container.append(oneDiv); // container div안에 넣어주고 적용시키기
let elInputUsername =
document.querySelector('#username')
console.log(elInputUsername);
elInputUsername.value = '김코딩';
선택한 element의 속성값(attribute)을 정함
element.setAttribute('attributeName', 'attributeValue')
=> attributeName: 속성 이름, attributeValue: 속성값
예시)
document.getElementbyId('xyz').setAttribute('title', 'This is title')
=> id값이 xyz인 요소의 title속성을 this is title로 바꿈
예시)
<p><a id="abc" href="#">LIVE BLOGGER</a></p>
document.getElementById( 'abc' ).setAttribute( 'href', 'https://urliveblogger.blogspot.com' );
const container = document.querySelector('#container') const tweetDiv = document.createElement('div') container.append(tweetDiv) tweetDiv.remove() // 삭제하는 방법
innerHTML
document.querySelector('#container').innerHTML = ''; // id가 container인 요소 아래의 모든 요소를 지움
innerHTML
의 경우 보안에서 몇 가지 문제점을 가지고 있음removeChild
는 자식요소를 지정해서 삭제할 수 있음const container = document.querySelector('#container'); while (container.firstChild) { container.removeChild(container.firstChild);
const container = document.querySelector('#container'); while (container.children.length > 1) { container.removeChild(container.lastChild); }
container의 자식 요소가 1개만 남을 때까지 마지막 자식 요소를 제거함
const tweets = document.querySelectorAll('.tweet') tweets.forEach(function(tweet){ tweet.remove(); }) // or for (let tweet of tweets){ tweet.remove() }
클래스 이름이 tweet인 요소만 찾아서 지우는 방법