JavaScript 사용법 요약정리

WEB/WEB의 기초

2021. 4. 25. 15:30


외부 스크립트 파일 연계시키기

<script src="파일경로"></script>

 


 

JS 기본 입출력

 

alert - 알림 창 출력하기

alert("안녕하세요?")

 

confirm - 확인 창 출력하기

var reply = confirm("정말 배경 이미지를 바꾸시겠습니까?");

 

prompt - 프롬프트 창에서 입력받기

var name = prompt("이름을 입력하세요.", "기본값");

 

document.write() - 웹 문서에 내용 출력하기

<script>
  var name = prompt("이름을 입력하세요.");
  document.write("<b><big>" + name + "</big></b>님, 환영합니다."):
</script>

 

console.log() - 콘솔 창에 내용 출력하기

<body>
  <h1>어서오세요</h1>
  
  <script>
    var name = prompt("이름을 입력하세요.");
    console.log(name + "님, 환영합니다.");
  </script>
</body>

 

※ 크롬에서 콘솔 창 띄우기 단축키 : Ctrl + Shift + J

 


 

기본문법

 

변수 선언

var 변수명;

 

var season = ["봄", "여름", "가을", "겨울"]

 

undefined 유형 : 자료형이 정의되지 않은 데이터

null 유형 : 데이터가 유효하지 않음

 


 

연산자

 

== 피연산자의 자료형을 자동으로 형변환
!=
=== 값(피연산자)과 자료형이 같다.
!== 값(피연산자)이 같지 않거나 자료형이 같지 않다.
? 삼항 연산자

 

3 == "3" // true
3 != "3" // false

3 === "3" // false
3 !== "3" // true

 

(number % 3 == 0) ? alert("3의 배수입니다.") : alert("3의 배수가 아닙니다.");

 


 

문자열 비교

 

"javascript" > "Javascript"

위 코드의 결과값은 true이다.

ASCII 코드값으로 비교하기 때문

 


 

switch 문

<script>
  switch(session) {
    case "1" :
      document.write("<p>1입니다.</p>");
      break;
    case "2" :
      document.write("<p>2입니다.</p>");
      break;
    case "3" :
      document.write("<p>3입니다.</p>");
      break;
  }
</script>

 


parseInt - 정수 변환

 

var num = parseInt(prompt("몇 명입니까?"));

 


 

반복문

 

for문

<script>
  var i;
  var sum = 0;

  for(i = 1; i < 6; i++){
    sum += i;
  }
</script>

 

while문

<script>
  var i = 1;
  var sum = 0;

  while(i < 10) {
    sum += i;
    i++;
  }
</script>

 

do-while문

<script>
  var i = 1;
  var sum = 0;

  do {
    sum += i;
    i++;
  } while(i <= 9)
</script>

 

물론 JS에도 break, continue가 있다.

 


 

함수와 변수

 

함수 선언

<script>
  function addNumber(a, b = 1) {
    var sum = a + b;
    return sum;
  }
</script>

 

변수 b와 같이 ES6부터는 기본값을 지정할 수 있다.

 


 

JS에서의 전역 변수, 지역변수 구분

전역 변수 함수 밖에서 선언하거나 함수 안에서 var를 빼고 선언
지역 변수 함수 안에서 var를 선언, 함수 영역 스코프를 갖는다.

 


 

호이스팅(hoisting)

 

변수의 선언스코프의 가장 위쪽으로 끌어올려서 해석한다.

 

실제 코드

<script>
  var x = 10;

  functino displayNumber() {
    console.log("x is " + x);
    console.log("y is " + y); // y가 아직 선언이 안되어있음
    var y = 20;
  }

  displayNumber();
</script>

 

JS해석기가 인식하는 코드 - y값이 할당이 되어있지 않다.(undefined)

<script>
  var x = 10;

  functino displayNumber() {
    var y;
    console.log("x is " + x);
    console.log("y is " + y); // y is undefined
    y = 20;
  }

  displayNumber();
</script>

 


 

let과 const

 

var 함수 안에서 사용되면, 함수 영역 스코프를 가지며 지역변수가 된다.

 

  변수 유효범위 같은 이름으로 재선언 값의 재할당 호이스팅
let 블록 레벨 스코프 X O O
const X X O

 

사실 let과 const는 호이스팅이 된다.

그러나 선언 이전에 호출하려하면 ReferenceError가 발생한다.

 

<script>
  var i = 0;
  
  if(i === 0) {
    console.log(cat_let); // ReferenceError
    
    console.log(cat_const); // ReferenceError
    
    console.log(cat_var); // undefined
    
    let cat_let = 1;
    const cat_const = 2;
    var cat_Var = 3;
  }
</script>

 

이는 호이스팅될 때 초기화, 즉 메모리에서 할당되지 않고

TDZ(Temporal Dead Zone)이라는 영역에 속하기 때문이다.

 

JS의 스코프, let, const, var에 대한 자세한 차이점은

YouTube Yalco채널영상에서 공부하기 : https://www.youtube.com/watch?v=HsJ4oy_jBx0

 

 


 

JS에서 변수를 사용하는 팁

 

  1. 전역 변수 사용을 최소화
  2. var는 함수의 시작 부분에서 선언(호이스팅되기 때문)
  3. for문의 카운터 변수에는 var보단 let을 사용
  4. ES6이 된다면, var보단 let을 사용

 


 

익명 함수

 

<script>
  var sum = function(a, b) {
    return a + b;
  }
  
  document.write("함수 실행 결과: " + sum(10, 20) );
</script>

 


 

즉시 실행 함수

 

<script>
  (function(a, b) {     // 매개변수
    sum = a + b;
  }(100, 200));         // 인수
  
  document.write("함수 실행 결과: " + sum);
</script>

 


 

화살표 함수

 

<script>

  // 매개변수 없음
  const hi = () => { return "안녕하세요?" };
  
  // 매개변수 없음, 한줄이라 return 생략
  const hi2 = () => "안녕하세요?";      
  
  // 매개변수 1개, 소괄호 생략가능
  const hi3 = user => { document.write(user + "님, 안녕하세요?"); }
  
  // 매개변수 2개
  const sum = (a, b) => a + b;
  
</script>

 


 

이벤트와 이벤트 처리기

 

이벤트의 종류

 

마우스 이벤트 click 클릭할 때
dblclick 더블클릭할 때
mousedown 요소 위에서 버튼을 눌렀을 때
mousemove 요소 위에서 포인터를 움직일 때
mouseover 포인터가 요소 위로 옮겨질 때
mouseout 포인터가 요소 밖으로 벗어날 때
mouseup 요소 위 마우스 버튼에서 손을 뗄 때
키보드 이벤트 keydown 키를 누르고 있을 때
keypress 키를 눌렀을 때
keyup 키에서 손을 뗄 때
문서 로딩 이벤트 abort 완전 로딩 전에 멈췄을 때
error 정확히 로딩되지 않았을 때
load 로딩이 끝났을 때
resize 화면 크기가 바뀌었을 때
scroll 화면이 스크롤되었을 때
unload 문서에서 벗어날 때
폼 이벤트 blur 폼 요소에 포커스를 잃었을 때
change 목록, 체크 상태 등이 변경될 때
focus 폼 요소에 포커스가 놓였을 때
reset 폼이 리셋되었을 때
submit submit 버튼을 클릭했을 때

 

이벤트 처리기

 

기본형

<태그 on이벤트명 = "함수명">

 

예시1) 클릭하면 알림 창 표시하기

<body>
  <ul>
    <li><a href="#" onclick="alert('버튼을 클릭했습니다.')">green</a></li>
    <li><a href="#" onclick="alert('버튼을 클릭했습니다.')">red</a></li>
    <li><a href="#" onclick="alert('버튼을 클릭했습니다.')">blue</a></li>
  </ul>
</body>

 

예시2) 클릭하면 배경색 바꾸기 - document.querySelector

<body>
  <ul>
    <li><a href="#" onclick="changeBg('green')">green</a></li>
    <li><a href="#" onclick="changeBg('red')">red</a></li>
    <li><a href="#" onclick="changeBg('blue')">blue</a></li>
  </ul>

<script>
  function changeBg(color) {
    var result = document.querySelector('#result');
    result.style.backgroundColor = color;
  }
</script>
</body>

 


 

DOM을 이용한 이벤트 처리기

 

기본형

웹 요소.onclick = 함수;

 

예시) DOM을 사용하지 않고 버튼을 클릭해서 글자색 바꾸기

<body>
  <button id="change">글자색 바꾸기</button>
  <p>Reprehenderit tempor do quis sunt eu et exercitation deserunt. Laboris adipisicing est sint aliquip nulla pariatur velit irure elit qui id. Dolore aliquip dolore eu ut irure sint Lorem reprehenderit velit. Duis veniam irure cillum anim excepteur culpa pariatur sunt esse. Eu nulla commodo velit ex id dolore incididunt mollit incididunt nisi labore culpa qui ea. Commodo veniam veniam in ipsum ad minim occaecat qui pariatur adipisicing laborum quis.</p>
  
  <script>
  
  // 방법 1 : 웹 요소를 변수로 지정 & 미리 만든 함수 사용
  var changeBttn = document.querySelector("#change");
  changeBttn.onclick = changeColor;
  
  function changeColor() {
    document.querySelector("p").style.color = "#f00";
  }
  
  
  // 방법 2 : 웹 요소를 따로 변수로 만들지 않고 사용
  document.querySelector("#change").onclick = changeColor;
  
  function changeColor() {
    document.querySelector("p").style.color = "#f00";
  }
  
  
  // 방법 3 : 직접 함수를 선언
  document.querySelector("#change").onclick = function() {
    document.querySelector("p").style.color = "#f00";
  };

  </script>
</body>

 

예시) DOM 이벤트 처리기 연결로 버튼을 클릭해서 글자색 바꾸기

<body>
  <div id="item">
  <img src="images/flower.jpg" alt="">
  <button class="over" id="open">상세 설명 보기</button>
  <div id="desc" class="detail">
  <h4>등심붓꽃</h4>
  <p>북아메리카 원산으로 각지에서 관상초로 흔히 심고 있는 귀화식물이다. 길가나 잔디밭에서 흔히 볼 수 있다. 아주 작은 씨앗을 무수히 많이 가지고 있는데 바람을 이용해 씨앗들을 날려보내거나, 뿌리줄기를 통해 동일한 개체들을 많이 만들어 냄으로써 번식한다. </p>
  <button id="close">상세 설명 닫기</button>
  </div>
  </div>	

  <script>		
  document.querySelector('#open').onclick = function() {
  document.querySelector('#desc').style.display = "block";	// 상세 설명 부분을 화면에 표시
  document.querySelector('#open').style.display = "none";   // '상세 설명 보기' 단추를 화면에서 감춤
  }
  document.querySelector('#close').onclick = function() {
  document.querySelector('#desc').style.display = "none";	   // 상세 설명 부분을 화면에서 감춤
  document.querySelector('#open').style.display = "block";	 // '상세 설명 보기' 단추를 화면에 표시
  }				
  </script>
</body>

 


 

JS의 객체

 

  • 내장 객체 : Array, Date 등
  • 문서 객체 모델(DOM) : document, image, link 등
  • 브라우저 관련 객체 : history, location, screen 등

 


 

인스턴스 만들기

<script>
  var now = new Date();
  document.write("현재 시각은 " + now.toLocaleString());
</script>

 


 

내장 객체 - Array

 

인스턴스 생성

 

초깃값이 없는 경우

<script>
  var numbers = new Array();	// 배열의 크기를 지정하지 않음
  var numbers = new Array(4);	// 배열의 크기를 지정함
</script>

 

초깃값이 있는 경우

<script>
  var numbers = ["one", "two", "three", "four"];		// 배열 선언
  var numbers = Array("one", "two", "three", "four");	// Array 객체를 사용한 배열 선언
</script>

 

프로퍼티 사용하기

<script>
  var numbers = ["one", "two", "three", "four"];
  
  for(i = 0; i < numbers.length; i++) {
    document.write("<p>" + numbers[i] + "</p>");
  }
</script>

 

Array의 메서드

 

concat() 두 개의 배열 합쳐 새로운 배열 생성
join() 요소를 합쳐 문자열 생성, 구분자 지정 가능
push() 맨 뒤에 요소 추가
pop() 맨 뒤의 요소 꺼내기
unshift() 맨 앞에 요소 추가
shift() 맨 앞의 요소 꺼내기
splice() 원하는 위치에 요소 추가 · 삭제하기
slice() 배열 슬라이싱
every() 주어진 함수에 대하여 참이면 true, 거짓이면 false 반환
filter() 주어진 함수로 참인 요소만 고르기
forEach() 배열 요소들에 함수 적용
indexOf() 주어진 값의 배열 인덱스 찾기
reverse() 배열 역순 정렬
sort() 지정한 조건에 따라 정렬
toString() 지정한 부분을 문자열로 반환

 


 

splice() - 인수의 개수에 따른 사용법

 

- 1개의 경우 : 주어진 인덱스 이후의 값 삭제

<script>
  // 인수가 1개일 경우
  var numbers = [1, 2, 3, 4, 5];
  var newNumbers = numbers.splice(2);
  document.write("반환된 배열 : " + newNumbers + "<br>" );	// [3, 4, 5]
  document.write("변경된 배열 : " + numbers );			// [1, 2]
  document.write("<hr>");
</script>

 

- 2개의 경우 : 주어진 인덱스 이후의 값을 지정한 개수만큼 삭제

<script>
  // 인수가 2개일 경우
  var study = ["html", "css", "web", "jquery"];
  var newStudy = study.splice(2,1);
  document.write("반환된 배열 : " + newStudy + "<br>");		// ["web"]
  document.write("변경된 배열 : " + study);			// ["html", "css", "jquery"]
  document.write("<hr>");
</script>

 

- 3개의 경우 : 주어진 인덱스 이후의 값을 지정한 개수만큼 삭제하고 지정한 요소 추가

<script>
  // 인수가 3개 이상일 경우
  // study는 현재 ["html", "css", "jquery"] 이다.
  
  var newStudy2 = study.splice(2, 1, "js");
  document.write("반환된 배열 : " + newStudy2 + "<br>");		// ["jquery"]
  document.write("변경된 배열 : " + study);			// ["html", "css", "js"]
</script>

 


 

slice() - 인수의 개수에 따른 사용법

 

- 1개의 경우 : 주어진 인덱스 이후의 요소들 모두 슬라이싱(기본 배열은 변하지 않음)

<script>
  var colors = ["red", "green", "blue", "white", "black"];
  var colors2 = colors.slice(2);		// 인덱스 2부터 끝까지
  document.write(colors2);			// ["blue", "white", "black"]
</script>

 

- 2개의 경우 : 주어진 인덱스부터 지정한 개수만큼 꺼내기

 

<script>
  var colors = ["red", "green", "blue", "white", "black"];
  var colors3 = colors.slice(2,4);		// 인덱스 2,3
  document.write(colors3);			// ["blue", "white"]
</script>

 


 

내장 객체 - Date

 

인스턴스 생성

 

초깃값이 없는 경우

<script>
  new Date();
</script>

 

초깃값이 있는 경우

<script>
  new Date("2020-02-25");
  new Date("02/25/2020");
  new Date("2020-02-25T18:00:00");	// 시간 정보
  new Date("2020-02-25T18:00:00Z");	// 국제표준시
  new Date("Mon Jan 20 2020 15:00:41 GMT+0900 (대한민국 표준시)");
</script>

 

Date의 메서드

 

날짜 · 시간 정보 가져오기
getFullYear() 연도를 4자리로 표시
getMonth() 월을 0~11의 숫자로 표시
getDate() 일을 1~31의 숫자로 표시
getDay() 요일을 0~6의 숫자로 표시
getTime() 1970년 1월 1일 자정 이후의 시간을 밀리 초로 표시
getHours() 시를 0~23의 숫자로 표시
getMinutes() 분을 0~59의 숫자로 표시
getSeconds() 초를 0~59의 숫자로 표시
getMilliseconds() 밀리초를 0~999의 숫자로 표시
날짜 · 시간 정보 설정하기
setFullYear() 연도를 4자리로 설정
setMonth() 월을 0~11의 숫자로 설정
setDate() 일을 1~31의 숫자로 설정
setDay() 요일을 0~6의 숫자로 설정
setTime() 1970년 1월 1일 자정 이후의 시간을 밀리 초로 설정
setHours() 시를 0~23의 숫자로 설정
setMinutes() 분을 0~59의 숫자로 설정
setSeconds() 초를 0~59의 숫자로 설정
setMilliseconds() 밀리초를 0~999의 숫자로 설정
날짜 · 시간 형식 바꾸기
toLocaleString() 현재 날짜와 시간을 현지시간으로 표시
toString() 문자열로 표시

 


 

내장 객체 - Math

 

Math의 프로퍼티

 

E 오일러 상수
PI 원주율
SQRT2 √2
SQRT1_2 1 / √2
LN2 loge2
LN10 loge10
LOG2E log2e
LOG10E log10e

 

Math의 메서드

 

abs() 절대값 반환
asin() 아크 사인 반환
acos() 아크 코사인 반환
atan() 아크 탄젠트 반환
atan2() 아크 탄젠트 반환
ceil() 소수점 이하 올림
floor() 소수점 이하 버림
round()

 

sin() 사인 반환
cos() 코사인 반환
tan() 탄젠트 반환
exp() 지수 함수
log() 로그 함수
min() 최소값
max() 최대값
pow() 지수값
random() 0~1 사이의 무작위 수 반환
sqrt() 제곱근 반환

 


 

브라우저와 관련된 객체

 

JS의 주요 내장 객체

 

window 브라우저 창마다 생성, 최상위 요소
document HTML 문서의 정보, <body>태그를 만나면 생성
navigator 현재 브라우저의 정보
history 현재 창의 사용자 방문 기록
location 현재 페이지의 URL
screen 현재 화면 정보

 


window

 

window의 프로퍼티

 

document 웹 문서에 접근
frameElement 현재 창이 다른 요소안에 있으면 그 요소 반환
innerHeight 내용 영역의 높이
innerWidth 내용 영역의 너비
localStorage 데이터 로컬 스토리지 반환
sessionStorage 데이터 세션 스토리지 반환
location window 객체의 위치 / 현재 URL
name 브라우저 창의 이름 가져오기 또는 수정
outerHeight 브라우저 창 바깥 높이
outerWidth 브라우저 창 바깥 너비
pageXOffset, scrollX 스크롤 시 수평으로 이동하는 픽셀 수
pageXOffset, scrollY 스크롤 시 수직으로 이동하는 픽셀 수
parent 현재 창이나 서브 프레임의 부모
screenX 브라우저 왼쪽 테두리와 모니터 왼쪽 테두리의 거리
screenY 브라우저 위쪽 테두리와 모니터 위쪽 테두리의 거리

 

window의 메서드

 

alert() 알림 창 표시
blur() 현재 창 포커스 제거
close() 현재 창 닫기
confirm() [확인], [취소] 버튼 창 표시
focus() 현재 창 포커스 부여
moveBy() 현재 창을 지정한 크기만큼 이동
moveTo() 현재 창을 지정한 좌표로 이동
open() 새 창 열기
postMessage() 메시지를 다른 창으로 전달
print() 현재 문서 인쇄
prompt() 프롬프트에 입력한 텍스트 반환
resizeBy() 지정한 크기로 현재 창 크기 조절
resizeTo() 동적으로 브라우저 창 크기 조절
scroll() 특정 위치로 스크롤
scrollBy() 지정한 크기만큼 스크롤
scrollTo() 지정한 위치로 스크롤
sizeToContent() 내용에 맞게 창 크기 맞춤
stop() 로딩 중지

 


 

navigator

 

웹 브라우저의 버전, 플러그인 설치 정보, 온 · 오프라인의 각종 정보를 불러온다.

 

Chrome의 렌더링 엔진, JS 엔진 등을 확인하고 싶다면 주소창에 "chrome://version"이라고 쳐보자.

 

navigator의 프로퍼티

 

battery 배터리 충전 상태
cookieEnabled 쿠키 정보 무시하면 false, 허용하면 true 반환
geolocation 모바일 기기를 이용한 위치 정보
language 브라우저 UI의 언어 정보
oscpu 현재 운영체제 정보
userAgent 현재 브라우저의 사용자 에이전트 문자열

 


 

history

 

history에는 방문한 사이트가 배열 형태로 저장된다.

 

history의 프로퍼티

length 방문한 사이트 갯수가 저장

 

history의 메서드

back() 이전 페이지
forward() 다음 페이지
go() 현재 페이지를 기준으로
상대적인 위치의 페이지 불러오기
go(-1) : 이전 페이지
go(1) : 다음 페이지

 


 

location

 

현재 문서의 URL 주소 정보가 들어 있다.

 

location의 프로퍼티

 

hash URL 중 #로 시작하는 해시 부분의 정보
href 전체 URL
host URL의 호스트이름과 포트번호
hostname URL의 호스트이름
port URL의 포트번호
protocol URL의 프로토콜
pathname URL 경로
search URL 중에서 ?로 시작하는 검색 내용 저장
username 도메인 이름 앞에 username을 함께 입력하는 사이트일 경우
username 정보 저장
password 도메인 이름 앞에 username, password를 함께 입력하는 사이트일 경우
password 정보 저장

 

location의 메서드

 

assign() 현재 문서에 새 문서 주소를 할당
reload() 현재 문서 다시 불러오기
replace() 현재 문서 URL을 다른 URL 문서로 교체
toString() 현재 문서의 URL을 문자열로 반환

 


 

screen

 

사용자의 화면 정보를 알아낼 때 사용

 

screen의 프로퍼티

width UI 영역을 포함한 영역의 너비
height UI 영역을 포함한 영역의 높이
availWidth UI 영역을 제외한 영역의 너비
availHeight UI 영역을 제외한 영역의 높이
colorDepth 픽셀을 렌더링할 때 사용하는 색상 수
pixelDepth 픽셀을 렌더링할 때 사용하는 비트 수
orientation 화면의 현재 방향

 

screen의 메서드

lockOrientation() 화면 방향 잠그기
unlockOrientation() 화면 방향 잠금 해제

 


 

DOM - 문서 객체 모델(Document Object Model)

 

DOM Tree와 Node

 

DOM에 접근하기

 

반환형태가 HTMLCollection인 경우 - get 메서드 :

<script>
  // 1. id 선택자로 접근하기
  document.getElementById("heading")

  // 2. class 선택자로 접근하기
  document.getElementByClassName("bright")

  // 3. 태그 이름으로 접근하기
  document.getElementByTagName("p")
</script>

 

텍스트, 속성 노드까지 제어하려는 경우 - querySelector 메서드:

<script>
  // id="heading"인 요소
  document.querySelector("#heading")
  
  // class="bright"인 요소
  document.querySelector(".bright")
</script>

 

웹 요소 수정하기 - inner 메서드 :

<script>
  var now = new Date();
  
  // innerText 메서드
  document.getElementById("current").innerText = now;
  
  // innerHTML 메서드
  document.getElementById("current").innerHTML = now;
</script>

 

속성 가져오기, 수정하기 - getAttribue(), setAttribute() :

<script>
  // getAttribute
  function displaySrc() {
    var cup = document.querySelector("#cup");
    alert("이미지 소스: " + cup.getAttribute("src"));
  }
  
  // setAttribute
  function changePic() {
    var newPic = this.src;
    cup.setAttribute("src", newPic);
  }
</script>

 


 

DOM에서 이벤트 처리하기

 

DOM 요소에 함수 직접 연결하기

<script>
  var cup = document.querySelector("#cup");
  cup.onclick = function(){
    alert("이미지를 클릭했습니다");
  }
</script>

 

함수 이름을 사용해 연결하기

<script>
  var cup = document.querySelector("#cup");
  cup.onclick = changePic;
  
  fucntion changePic() {
    cup.src = "images/cup-2.png";
  }
</script>

 

event의 프로퍼티와 메서드

프로퍼티
target -> 이벤트가 최초로 발생한 대상
timeStamp -> 이벤트가 최초로 발생한 시간
type -> 발생한 이벤트 이름
which 키보드 관련 이벤트에서 -> 키의 unicode 값
ctrlKey [Ctrl]키를 눌렀는지 안눌렀는지 -> boolean
altKey [Alt]키를 눌렀는지 안눌렀는지 -> boolean
shiftKey [Shift]키를 눌렀는지 안눌렀는지 -> boolean
button -> 마우스 버튼 키 값
charCode -> 어떤 키를 눌렀는지 unicode값
clientX -> 이벤트가 발생한 X좌표
clientY -> 이벤트가 발생한 Y좌표
pageX -> 현재문서 기준 이벤트가 발생한 X좌표
pageY -> 현재문서 기준 이벤트가 발생한 Y좌표
screenX -> 현재화면 기준 이벤트가 발생한 X좌표
screenY -> 현재화면 기준 이벤트가 발생한 Y좌표
메서드
preventDefault() 이벤트를 취소

 

event 객체에는 이벤트정보만 들어있어서

이벤트 대상에 접근하려면 this를 사용해야 한다.

<script>
  var card = document.querySelector("#card");
  card.onclick = function(event) {
    alert("클릭한 이미지 파일 : " + this.src);
  }
</script>

 

addEventListener() - 한 요소에 여러 이벤트 처리기 연결하기

 

기본형

요소.addEventListener(이벤트, 함수, 캡쳐 여부);

 

1. 이벤트 - click, press처럼 on을 붙여쓰지 않는다.

2. 함수 - 실행할 명령, 함수를 지정

3. 캡쳐 여부 - 기본값 false(버블링)은 자식 -> 부모노드로 전달 / true(캡쳐링)은 부모 -> 자식 노로 전달

 

<script>
  var cover = document.getElementById("cover");
  cover.addEventListener("mouseover",changePic, false); // 포인터 올리면 사진바꾸기
  cover.addEventListener("mouseout",originPic, false);  // 포인터 내리면 원래대로

  function changePic() {
  cover.src = "images/easys-2.jpg";
  }
  
  function originPic() {
  cover.src = "images/easys-1.jpg";
  }
</script>

 

CSS 속성에 접근하기

 

기본형

document.요소명.style.속성명

 

 

예)

<script>
  document.getElementById("desc").style.color = "blue";
</script>

 


 

노드 리스트 다루기

 

요소 노드 만들기 - createElement(노드명)

<script>
  var newP = document.createElement("p");
</script>

 

속성 노드 만들기 - createAttribute(속성명)

<script>
  var srcNode = document.createAttribute("src");
  var altNode = document.createAttribute("alt");
  scrNode.value = "images/dom.jpg";
  altNode.value = "돔 트리 예제 이미지";
</script>

 

속성 노드 연결하기 - setAttributeNode(속성노드)

<script>
  newImg.setAttributeNode(srcNode);
</script>

 

텍스트 노드 만들기 - createTextNode(텍스트)

<script>
  var txtNode = document.createTextNode("DOM은 document object model의 줄임말입니다.");
</script>

 

자식 노드 연결하기 - appendChild()

부모노드.appendChild(자식노드)

<script>
  newP.appendChild(txtNode);
  document.getElementById("info").appendChild(newP);
</script>

 

노드 삭제하기 - removeChild()

DOM 트리에서 노드를 바로 삭제할 수 없다!

따라서 현재노드의 부모노드에 먼저 접근해야 한다.

 

노드.parentNode

 

예를 들어 ul - li 구조에서 li를 삭제하려면

ul에 먼저 접근한 다음, removeChild()로 자식노드인 li를 삭제해야 한다.

<script>
  li.parentNode.removeChild(li);
</script>

'WEB > WEB의 기초' 카테고리의 다른 글

코드 플레이그라운드 비교  (0) 2023.04.10
CSS 사용법 요약정리  (1) 2021.03.14
HTML 태그 모음 & 요약정리  (12) 2021.02.26