[객체]
{key : value} 구조
js 는 객체 기반 언어
let person = { 내가 넣은 속성과 값이 들어감 } -> 사용자 정의 객체
1) 브라우저 객체 (문서 객체 모델)
2) 내장 객체
3) 사용자 정의 객체
문서객체 모델
DOM - HTML 의 요소를 가지고 올 수 있음
document.geElementById();
객체
- {key:value, key:valule ... }
let name = '미리';
let name = {
"one" : "miri",
"two" : "eunyoung",
....
}
console.log(name.one);
--> miri
name.one = "수민";
객체
1. 내장객체 -> 자바스크립트 엔진에서 제공하는 객체
2. 브라우저객체 -> 브라우저에 내장된 객체 (document라고 하는 문서객체)
3. 사용자 정의 객체 -> 내가 만드는 객체
*DOM*
document : html문서
object : 객체(js)
modeling : 모델링
<body>
<h1>안녕~</h1>
</body>
* DOM이라고 하는 객체는
HTML의 문서 내의 요소들을 전부 단일요소로 쪼개줌.
ex) <h1 id="h1Tag"> 안녕하세요 </h1>
태그 : h1
속성 : id
속성에 대한 값 : h1Tag
컨텐츠 : 안녕하세요
객체)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// 객체 구조 : {key:value, key:value, ...}
// key : 객체의 property(속성) - 문자열로 표현하거나 생략
// value : property의 값, 기본자료형, 객체타입의 데이터, 함수
// 사용자 정의 객체
let person = {
"name":"Ggogi",
"age":20,
"genger":"woman",
// 이 객체의 모든 정보를 출력하는 기능
"info": function() {
console.log(this.name, this.age);
}
}
// person 객체의 내용을 출력
console.log(person);
// person 객체에서 이름 출력
console.log(person.name);
// person 객체의 모든 정보를 출력
person.info();
// person 객체의 나이를 변경
person.age = 30;
console.log(person.age);
</script>
</body>
</html>
내장객체)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// 내장객체 : 자바스크립트에서 제공하는 객체
// 종류 : Date, Array, Math, String
let today = new Date();
console.log(today);
let t_year = today.getFullYear();
console.log((t_year));
let t_day = today.getDay();
console.log(t_day); // 요일정보 : 0 ~ 6 으로 표현, 1: 월, 2: 화.......
</script>
</body>
</html>
브라우저 객체)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// 브라우저 객체
// : 브라우저에 내장된 객체
// window() : 브라우저객체 중에 최상위
window.open("https://www.naver.com", "naver창", "width=500; height=500");
</script>
</body>
</html>
문서객체모델)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1 id="tit">
<a>문서객체모델(DOM)</a>
</h1>
<h3 class="day">왜 아직도 수요일인디</h3>
<h3 class="day">왜 아직도 화요일인디</h3>
<h3 class="day">왜 아직도 월요일인디</h3>
<div id="div1">
1번
<div>
2번
<div>3번</div>
</div>
</div>
<script>
// document : 현재 html문서에
// . : 접근해서
// getElement : html요소를 가져올거야
// ById("id 이름") : "id 이름"이라는 id값을 가진
const tit = document.getElementById("tit");
console.log(tit);
// 내가 가지고 온 요소에서 컨텐츠만 추출
// innerText : '값' => 단순 텍스트만
// innerHTML : '값' => 내부 HTML태그 요소도 포함!
console.log(tit.innerText);
tit.innerText = "즐거운 자바스크립트";
console.log(tit.innerHTML);
tit.innerHTML = '즐거운 자바스크립트!';
// 클래스를 통해서 요소를 가져오기
// 유사 배열 형태로 가져와진다 (HTMLCollection)
let h3Tag = document.getElementsByClassName("day");
console.log(h3Tag);
console.log(h3Tag[0]);
console.log(h3Tag[1]);
console.log(h3Tag[2]);
// 수요일을 목요일로 변경
h3Tag[0].innerText = "왜 아직도 목요일인디";
// 태그 이름을 통해서 요소를 가져오기
let h1 = document.getElementsByTagName("h1");
console.log(h1);
console.log(document.getElementById('div1').innerHTML);
console.log(document.getElementById('div1').innerText);
</script>
</body>
</html>
예제) 숫자증감실습
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<p>
🍗<span id="number">0</span>
</p>
<button id="like">좋아요</button>
<button id="hate">싫어요</button>
<script>
// step 1. 좋아요 버튼 클릭하면 숫자가 1씩 증가
// 1-1. 버튼 가져오기, 숫자값 가져오기
let num = document.getElementById("number");
let btn1 = document.getElementById("like");
console.log(btn1.innerHTML);
console.log(num.innerHTML);
// 1-2. 클릭 이벤트 걸어주기
// 1-3. 클릭을 할 때마다, id가 number인 span태그 안 값이 1씩 증가
// btn1.onclick = () => {
// alert("좋아요 클릭");
// }
btn1.addEventListener("click", () => {
num.innerText = Number(num.innerText)+1;
});
// step 2. 싫어요 버튼 클릭하면 숫자가 1씩 감소
let btn2 = document.getElementById("hate");
btn2.addEventListener("click", () => {
if(num.innerText > 0) {
num.innerText = Number(num.innerText)-1;
}
});
</script>
</body>
</html>
예제) DOM 속성실습
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<input type="text" id="inputText">
<button id="inputBtn">input태그 값 가져오기</button>
<img src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQ9sdsER301OYkVqYBA8I73F6SsBJYYCUG7Qw&usqp=CAU"
id="imgTag" width="200px">
<button id="getImgBtn">이미지 값 불러오기</button>
<button id="setImgBtn">이미지 변경</button>
<script>
// https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRSWQQfZODPFRzXGrqI0UWbvx2r1EFmqQCwng&usqp=CAU
// 1. input태그 안에 사용자가 입력한 값을 가져오기
document.getElementById("inputBtn").addEventListener("click", () => {
let inputTag = document.getElementById("inputText");
// innerText로는 가지고 오지 못한다.
// 이유 : <input>에게는 컨텐츠(내용)이 없음.
// 사용자가 입력한 글자를 가져오려면, .value
console.log("input : ", inputTag.value);
// 초기화 시키기
inputTag.value = '';
});
// 2. 이미지 태그에 접근해서 속성 다루기
// 2-1. imgTag의 속성값을 출력
let imgTag = document.getElementById("imgTag")
console.log(imgTag);
// src 속성만 가지고오기 첫 번째 방법 : .getAttribute()
// console.log(imgTag.getAttribute('src'));
// console.log(imgTag.getAttribute('width'));
// src 속성만 가지고오기 두 번째 방법 : .속성이름
console.log(imgTag.src);
console.log(imgTag.width);
// 2-2. imgTag에 접근해서 속성을 수정
// 첫 번째 방법 : .setAttribute('속성이름', '바꿀값')
imgTag.setAttribute('src', 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRSWQQfZODPFRzXGrqI0UWbvx2r1EFmqQCwng&usqp=CAU');
// 두 번째 방법 : .속성이름 = '바꿀값';
imgTag.src = 'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRSWQQfZODPFRzXGrqI0UWbvx2r1EFmqQCwng&usqp=CAU';
imgTag.width = 100;
</script>
</body>
</html>
예제) DOM속성실습2
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div>
<input type="text" id="data">
<button id="inputBtn">출력</button>
</div>
<div id="result"></div>
<script>
// 버튼을 클릭하면, 유저가 입력한 값을 가져온 후
// 웹 페이지에 출력
// getElement, 속성가져오기
// userInput : 유저가 입력한 값에 접근
let userInput = document.getElementById("data");
// result : 유저가 입력한 값을 웹 페이지에 출력하기 위한 변수
let result = document.getElementById("result");
// btnPrint : 유저가 입력한 값을
let btnPrint = document.getElementById("inputBtn");
// btnPrint 요소에 클릭 이벤트를 추가
document.getElementById("inputBtn").addEventListener("click", () => {
result.innerText = userInput.value;
console.log(userInput.value);
});
</script>
</body>
</html>
'Web > JavaScript' 카테고리의 다른 글
jQuery (0) | 2023.04.24 |
---|---|
객체 실습 (0) | 2023.04.20 |
함수 (0) | 2023.04.18 |
랜덤배열, 점수출력 예제 (0) | 2023.04.17 |
배열 (0) | 2023.04.17 |
댓글