<script>
태그<script>
태그를 이용<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<!-- 이 부분에 들어가거나-->
>
</head>
<body>
<!-- 이 부분에 들어감-->>
</body>
</html>
<script>
태그를 이용해서 jQuery 라이브러리를 불러옴document.createElement('div')
를 통해 div 생성document.createElement('div')
<div></div>
//자바스크립트에서 어떤 작업의 결과를 담으려면?
//변수를 선언하고 어떤 작업의 결과를 변수에 할당
//여기서는 div element를 tweetDiv에 할당
const tweetDiv = document.createElement('div')
-> 아직 화면에 변화가 없는 것이 당연, APPEND
에서 tweetDiv를 트리구조에 연결!
document.body.append(tweetDiv);
html요소("div"), id(#~~),class(.~~)
3가지가 가장 많이 쓰임.const oneTweet = document.querySelector('.tweet')
-> querySelector에 '.tweet'
을 넣으면, 클래스 이름이 tweet인 html 엘리먼트 중 첫번째 엘리먼트를 조회할 수 있다.
const tweets = document.querySelectorAll('.tweet')
-> querySelectorAll 로 클래스 이름이 tweet인 모든 html 요소를 배열형 객체로 받아온다.
const getOneTweet = document.getElementById('container')
const queryOneTweet = document.querySelector('#container')
console.log(getOneTweet === queryOneTweet) // true
-> querySelector과 querySelectorAll 만 알아도 대부분의 요소를 조회할 수 있지만, get 으로 시작하는 DOM조회 메서드를 볼 수 있다. 이 메서드는 querySelector와 비슷한 역할을 하는 오래된 방식 !
const container = document.querySelector('#container')
const tweetDiv = document.createElement('div')
container.append(tweetDiv)
-> CREATE 에서 생성한 div요소(tweetDiv)를 container 안에 마지막 자식요소로 추가한다.
div요소(tweetDiv)를 container 안에 마지막 자식요소로 추가된 모습
<div>
생성const oneDiv = document.createElement('div');
console.log(oneDiv) // <div></div>
<div></div>
에 문자열을 입력한다.oneDiv.textContent = 'dev';
console.log(oneDiv) // <div>dev</div>
<div>dev</div>
이대로 container 에 append 하면 css 스타일링이 적용되지 않는다. CSS 스타일링이 적용될 수 있도록 element에 class 를 추가하자! classList.add 를 이용해 추가한다.oneDiv.classList.sdd('tweet')
console.log(oneDiv) // <div class= "tweet">dev</div>
const container = document.querSelector('#container')
container.append(oneDiv)
dev 생성완료!
const oneDiv = document.createElement('div');
oneDiv.remove()
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);
}
it("lexical scope와 closure에 대해 다시 확인합니다.", function () {
let age = 27;
let name = "jin";
let height = 179;
function outerFn() {
let age = 24;
name = "jimin";
let height = 178;
function innerFn() {
age = 26; // age = 24;가 바뀜 (함수 안에서만 작용, 전역변수에는 영향없음)
let name = "suga"; // 지역변수
return height; // 178리턴 (안을 먼저 확인)
}
innerFn();
expect(age).to.equal(26);
expect(name).to.equal("jimin");
return innerFn;
}
const innerFn = outerFn(); // outerFn() 실행해서 리턴값을 반환 !!
expect(age).to.equal(27); // age = 24, age = 26은 지역변수이므로 {} 안에서만 효력이 발생하므로 x
expect(name).to.equal("jimin");
expect(innerFn()).to.equal(178);
});
});