- 브라우저에 내장된 객체
- 계층적 구조
- 최상위 window 객체가 있다.
window 객체
메서드 종류
open('URL','새 창 이름','새창옵션') | URL페이지를 새 창으로 나타냄 |
close() | 현재 창 종료 |
alert(data) | 경고창 |
prompt('질문','답변') | 질의응답창 (결괏값: 문자형) |
confirm('질문내용') | 진행여부확인창 (결괏값: 확인-true, 취소-false) |
moveTo(x, y) | 지정한 새 창의 위치를 이동 |
resizeTo(width, height) | 지정한 새창의 크기 변경 |
setInterval(function() { 코드 }, 시간간격) | 지속적으로 일정한 시간 간격으로 함수 호출 |
setTimeout(function() { 코드 }, 시간간격) | 단 한번 일정한 시간 간격 이후에 함수 호출 |
쿠키 이용해서 하루동안 안보기 체크박스 만들어보기
(https://www.w3schools.com/js/js_cookies.asp)
팝업창은 페이지가 로드되면 자동으로 뜨고, 버튼을 눌러도 뜨게함
<button type="button" onclick="popupOpen();">팝업열기</button>
<script type="text/javascript">
//인수에 절대 경로 혹은 상대 경로 입력 가능
//open('http://ksmart.or.kr'); //window생략가능
//창닫기
//close();
//경로, 타이틀, 옵션
/* window.open('popup.html'
, '팝업띄우기',
'width=300, height=400, left=100, top=100, scrollbar=no'); */
//이벤트와 연계
function popupOpen() {
open('popup.html'
,'팝업띄우기'
,'width=300, height=400, left=100, top=100, scrollbar=no'
);
}
var openPopupCheck = getCookie('myPopup');
console.log(openPopupCheck);
if(openPopupCheck != 'Y'){
popupOpen();
}
//저장시
//document.cookie = "username=John Smith; expires=Thu, 18 Dec 2013 12:00:00 UTC; path=/";
//값 호출 시
//날짜와 패스를 제외한 키와 값만 가지고 온다(유효 기간 내의 데이터만)
//document.cookie -> username = John Smith; userage=20;
//함수 호출시 인수에 키를 넣어 쿠키값 가지고 오기
function getCookie(cname) {
let name = cname + "=";
//저장된 쿠키를 디코딩
let decodedCookie = decodeURIComponent(document.cookie);
//여러개의 값 저장시 ;로 구분 되어 있다
//;기준으로 잘라 배열로 변환한다
let ca = decodedCookie.split(';');
for(let i = 0; i <ca.length; i++) {
let c = ca[i];
//배열의 원소에 접근하여 처음의 문자열이 공백이라면 공백을 제거
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
//배열 원소에 해당 키의 값이 포함되어 있다면
if (c.indexOf(name) == 0) {
//쿠키의 원소 값이 username=John Smith라면
//name.length ->키의 문자열 갯수
//c.length -> 배열원소의 문자열 갯수
//substring으로 값 잘라서 반환
return c.substring(name.length, c.length);
}
}
return "";
}
</script>
<!-- popup.html -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>팝업</title>
</head>
<body>
<h1>팝업입니다.</h1>
<input type="checkbox" id="dayCheck"> 오늘하루안보기
<button type="button" onclick="popupClose();">팝업 닫기</button>
<script type="text/javascript">
function popupClose() {
//인수에 들어간 선택자를 검색하고 검색된 대상이 체크가 되어있는지 결과 얻어오기
var isDayCheck = document.querySelector('#dayCheck').checked;
if (isDayCheck){
setCookie('myPopup', 'Y', 1);
}
//현재 창 닫기
close();
}
//document.cookie = "username=John Smith; expires=Thu, 18 Dec 2013 12:00:00 UTC; path=/";
/*
저장 포맷터
키=값; expires=쿠키 저장 유효기간; path=/ (/일 경우 사이트 전체 경로)
*/
function setCookie(cname, cvalue, exdays) {
const d = new Date(); //현재 기준 날짜 객체 생성
//생성된 날짜 객체에 인수에 들어온 값의 * 하루연산
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
//날짜 정보를 문자열로 변환
let expires = "expires=" + d.toUTCString();
//쿠키에 키와 값 날짜 정보를 한꺼번에 저장하기
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
</script>
</body>
</html>
실습1. 아래에 주어진 날짜 객체를 활용하여 1초 마다 아래의 문자형 포멧이 출력되도록 하여라.
(포멧: 14 : 07 : 01 ->시간증가)
풀이
var date = new Date();
setInterval(function(){
date.setSeconds(date.getSeconds()+1);
var printDate = date.getHours()+' : ';
printDate += date.getMinutes()+' : ';
printDate += (date.getSeconds()<10)?'0'+date.getSeconds():date.getSeconds();
console.log(printDate);
}, 1000);
> 문제풀때 시간과 분은 두자리수라 초와 같이 0붙일 생각을 안함...
결과
선생님풀이
setInterval(function(){
var h = date.getHours();
var m = date.getMinutes();
var s = date.getSeconds();
if(h<10) h='0'+h;
if(m<10) m='0'+m;
if(s<10) s='0'+s;
console.log(h + ':' + m + ':' +s);
date.setSeconds(date.getSeconds()+1);
}, 1000);
실습2. 5~1까지 카운팅 후에 1초때 '이벤트 종료'라는 경고를 띄우도록 하여라.
풀이
var cnt = 6;
var intervalNumber = setInterval(function() {
cnt--;
console.log(cnt);
if(cnt==1){
clearInterval(intervalNumber);
alert('이벤트 종료');
}
}, 1000);
> 카운팅하는 숫자에 5를 넣고 console.log()메서드를 증감연산자 위에써도 if문에 조건을 1로 넣어서 1은 출력이 안되어서 그냥 카운팅 숫자 초기화를 6으로해버림... 근데 그냥 cnt=5, cnt--랑 console.log()메서드 자리 바꾸고, if(cnt<1)했으면 될일...
결과
location 객체
- 현재 페이지의 url의 정보
- 새로고침 : reload()
- 페이지 이동 : location.href ='이동 경로';
histoty 객체
- 사용자가 방문한 사이트 이력을 가지고 있는 객체
- 방문한 사이트이력을 가지고 있음으로 이전 페이지 다음 페이지 이동 가능하다.
- .back() = .go(-1)
- .forward() = go(1)
navigator 객체
- 브라우저 정보 및 OS정보를 제공하는 객체
- ex) const agt = navigator.userAgent.toLowerCase();
screen 객체
-디바이스 크기를 가지고 있는 객체
document 객체
- 이벤트 처리에 주로 사용 따로 정리
2022.01.08 - [{ "Hello World!" };/JavaScript] - (JavaScript) document 객체
2022.01.14 - [{ "Hello World!" };/JavaScript] - (JavaScript) 콜백 함수, cloneNode 동적바인딩
'{ "Hello World!" }; > JavaScript/jQuery' 카테고리의 다른 글
(JavaScript) HTML 요소이벤트 (0) | 2021.12.31 |
---|---|
(JavaScript) 내장객체 (0) | 2021.12.31 |
js/ 2022년 D-day (0) | 2021.12.31 |
js/ 티스토리 스킨 getElement 이용해보기 (0) | 2021.12.26 |
(JavaScript) 객체 생성자 함수, 프로토타입 (0) | 2021.12.23 |