Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- clonecoding
- 영속성 컨텍스트
- frontend
- 장고
- nomadcoder
- SBERT
- TODO
- 매핑
- JS
- html
- 장고독학
- javascript
- 다대다
- 트랜잭션
- React
- java
- AWS
- 단방향
- ORM
- web
- Django
- 노마드코더
- css
- 다대일
- python
- 플러시
- 일대다
- JPA
- 바닐라js
- 프론트엔드
Archives
- Today
- Total
꿈꾸는 새벽하늘
[노마드코더] JavaScript (3) 본문
1. JavaScript는 HTML과 연결되어 있다.
console에 document를 입력하면 작성한 HTML을 가져올 수 있다.
JavaScript에서 HTML을 읽어올 수도 있고, JavaScript에서 HTML을 수정할 수도 있다.
2. document는 object이다.
브라우저에서 제공하는 객체중 document 는 JS 에서 HTML 파일을 불러올 수 있도록 도와준다.
3. JavaScript에서 HTML 변경하기
=> title element가 "My Day Plan"으로 변경된다.
4. JavaScript에서 HTML element를 가져오기
(1) getElementById
<h1 id="title">Grab me!</h1> //HTML
const title = document.getElementById("title"); //JavaScript
- HTML의 id로 element를 찾는다.
(2) getElementsByClassName
<h1 class="title">Grab me!</h1> //HTML
const hellos = document.getElementsByClassName("hello"); //JavaScript
console.log(hellos);
- class명으로 element를 찾아서 array로 반환한다.
(3) getElementsByTagName
<div class="hello"> //HTML
<h1>Grab me!</h1>
</div>
const title = document.getElementsByTagName("h1"); //JavaScript
- 태그명으로 element를 찾아서 array로 반환한다.
(4) querySelector
element를 CSS 방식으로 검색한다.
<div class="hello"> //HTML
<h1>Grab me! 1</h1>
</div>
<div class="hello">
<h1>Grab me! 2</h1>
</div>
<div class="hello">
<h1>Grab me! 3</h1>
</div>
const title = document.querySelector(".hello h1"); //JavaScript
console.log(title);
- 첫 번째로 검색된 element 하나만 반환
(5) querySelectorAll
element를 CSS 방식으로 검색한다.
<div class="hello"> //HTML
<h1>Grab me! 1</h1>
</div>
<div class="hello">
<h1>Grab me! 2</h1>
</div>
<div class="hello">
<h1>Grab me! 3</h1>
</div>
const title = document.querySelectorAll(".hello h1"); //JavaScript
console.log(title);
- 조건에 맞는 모든 element 반환
(6) 두 코드는 동일한 일을 한다.
const title = document.querySelector("#hello"); //무엇을 검색하는지 명확하지 않아서 id(#)라고 명시해야 함
const title = document.getElementById("hello");
(7) querySelector 응용
<div class="hello"> //HTML
<h1>Grab me!</h1>
</div>
const title = document.querySelector(".hello h1"); //JavaScript
title.innerText = "Hello";
=> 'Grab me!'가 'Hello'로 변경되어 화면에 나타난다.
5. Event
const h1 = document.querySelector("div.hello:first-child h1");
function handleTitleClick() {
h1.style.color = "darkgreen";
}
function handleMouseEnter() {
h1.innerText = "Mouse is here!";
}
function handleMouseLeave() {
h1.innerText = "Mouse is gone!";
}
function handleWindowResize() {
document.body.style.backgroundColor = "salmon";
}
function handleWindowCopy() {
alert("The text is copied!");
}
function handleWindowOffline() {
alert("WIFI Error");
}
function handleWindowOnline() {
alert("WIFI is connected");
}
h1.addEventListener("click", handleTitleClick);
h1.addEventListener("mouseenter", handleMouseEnter);
h1.addEventListener("mouseleave", handleMouseLeave);
window.addEventListener("resize", handleWindowResize);
window.addEventListener("copy", handleWindowCopy);
window.addEventListener("offline", handleWindowOffline);
window.addEventListener("online", handleWindowOnline);
6. JavaScript로 CSS 제어하기
const h1 = document.querySelector("div.hello:first-child h1");
function handleTitleClick() {
const currentColor = h1.style.color;
let newColor;
if (currentColor === "darkgreen") {
newColor = "crimson";
} else {
newColor = "darkgreen";
}
h1.style.color = newColor;
}
h1.addEventListener("click", handleTitleClick);
7. Toggle
<div class="hello"> //HTML
<h1 class="my-font">Click me!</h1>
</div>
body { //CSS
background-color: beige;
}
h1 {
color: mediumpurple;
}
.clicked {
color: hotpink;
}
.my-font {
font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen,
Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
}
const h1 = document.querySelector("div.hello:first-child h1"); //JavaScript
function handleTitleClick() {
h1.classList.toggle("clicked");
}
h1.addEventListener("click", handleTitleClick);
toggle function은 아래의 코드를 대체할 수 있다.
function handleTitleClick() {
const clickedClass = "clicked";
if (h1.classList.contains(clickedClass)) {
h1.classList.remove(clickedClass);
} else {
h1.classList.add(clickedClass);
}
}
'💻 Programming' 카테고리의 다른 글
[노마드코더] JavaScript (5) (0) | 2022.06.29 |
---|---|
[노마드코더] JavaScript (4) (0) | 2022.06.29 |
[노마드코더] JavaScript (2) (0) | 2022.06.23 |
[노마드코더] JavaScript (1) (0) | 2022.06.23 |
[생활코딩-WEB2] CSS (2) (0) | 2022.06.21 |