본문 바로가기
Javascript

JS(Date, window, location, history 객체)

by 글로리. 2020. 7. 27.

Date 내장 객체

Date 객체 만들기

// mydate에 현재 날짜 입력됨.
var mydate = new Date();

Date 객체의 주요 함수

함수명설명
.getFullYear( )현재 년도를 리턴
.getMonth( )현재 월을 리턴(0=1월,1=2월…11=12월)
.getDate( )현재 일을 리턴
.getDay( )현재 요일을 리턴한다.(0=일,1=월…6=토)
.getHours( )현재 시간을 리턴
.getMinutes( )현재 분을 리턴
.getSeconds( )현재 초를 리턴
.getTime( )1970년1월1일0시0분0초부터현재까지의시간을1/1000초단위로 리턴한다.(TimeStamp)
.setYear(int);1970년이상의년도를설정한다.
.setMonth(int);월을 설정(0~11)
.setDate(int);일을 설정
.setDay(int);요일을 설정(0~6)
.setHours(int);시를 설정
.setMinutes(int);분을 설정
.setSeconds(int);초를 설정
.setTime(int);TimeStamp값으로시각을설정한다.

Date 객체활용(1) : 날짜, 시간 계산

  • TimeStamp : 1970년 1월 1일 자정부터 지금까지 지난 시각을 초 단위로바꾼 값
// 날짜 객체생성
var theday = new Date(2020, 0, 1);    // 2020년 1월 1일
var today = new Date(2020, 6, 23);    // 2020년 7월 23일
var cnt = today.getTime() - theday.getTime();

// Math.floor은 소수점 이하를 절단하는 함수  
var day = Math.floor(cnt / (24 \* 60 \* 60 \* 1000));  
document.write("올해는 " + day + "일 지났습니다.");

/* 실행결과 */  
올해는 204일 지났습니다.

Date 객체활용(2) : 타이머 기능

  • setInterval 함수는 다른 함수의 이름과 1/1000초 단위의 시간값을 파라미터로 설정하여
  • 정해진 시간에 한번씩 파라미터로 전달된 함수를 반복적으로 호출.
function printTime() {
//현재시각
    var days = ["일", "월", "화", "수", "목", "금", "토"];
    var mydate = new Date();
    var yy = mydate.getFullYear();
    var mm = mydate.getMonth() + 1;
    var dd = mydate.getDate();
    var i = mydate.getDay();
    var day = days[i];
    var hh = mydate.getHours();
    var mi = mydate.getMinutes();
    var ss = mydate.getSeconds();

    // 한문장으로 병합
    var result = yy + "/" + mm + "/" + dd + "/" + day + "요일 " + hh + ":" + mi + ":" + ss;
    // id 속성값이 timer인 요소에게 결과 출력
    document.getElementById("timer").innerHTML = result;
}

function startTimer() {
    // printTime 함수를 1초에 한번씩 반복해서 자동 호출.
    setInterval(printTime, 1000);
}

Date 객체활용(3) : 남은 날짜 계산

/** 오늘부터 파라미터로 전달받은 날짜에 대한 d'day를 계산하여 리턴한다. */
function getDday(y, m, d) {
    // 오늘 날짜
    var today = new Date();
    // 파라미터로 받은 날짜
    var dday = new Date(y, m-1, d);
    // 두 날짜간의 차이를 구한다.
    var cnt = dday.getTime() - today.getTime();
    // 남은 날짜는 1시간이라도 1일로 계산해야 하므로, 연산결과를 올림한다.
    var n = Math.ceil(cnt / (24 * 60 * 60 * 1000));
    return n;
}
// 매년 12월 31일까지의 남은 날짜 계산하기
var date = new Date();
var y = date.getFullYear();
var dday = getDday(y, 12, 31);
document.write("<h1>올해는 앞으로 " + dday + "일 남았습니다.</h1>”);

Window 객체

window.open()함수

// 새로운 브라우저 창 열기(혹은 새로운 탭)
window.open("URL주소");

// 팝업창 형태로 열기
window.open("URL주소", "창이름", "옵션");

// 창 이름을 지정한 경우
// 창이름이 같기 때문에 여러번 눌러도 한 팝업창 안에서 새로고침 됨
window.open('http://www.naver.com','mywin','width=300, height=500, scrollbars=no, toolbar=no, menubar=no,status=no, location=no');

// 창 이름을 지정하지 않은 경우
// 클릭한 횟수만큼 팝업창이 열림
window.open('http://www.naver.com', '', 'width=300, height=500, scrollbars=no, toolbar=no, menubar=no, status=no, location=no');

href / onclick 속성의 충돌 방지

  • href와 onclick이 동시에 작성하면 이벤트가 실행되기 전후에 href에 명시된 페이지로 이동하는 경우 발생.
  • 이를 방지하기 위해 'return false;' 구문을 추가한다.
<a href="#" onclick= "open1(); return false;">새 창 열기 </a>

location 객체

  • 웹 브라우저의 주소 표시줄을 제어
  • 주소표시줄의 현재 주소 혹은 그 일부를 조회할 수 있으며, 변경도 가능.
document.write("<p>문서의 URL주소 : " + location.href + "</p>");
// 문서의 URL주소 : http://127.0.0.1:8080/07-JS/%EC%8B%A4%EC%8A%B5/js10/02-location.html
document.write("<p>호스트 이름과 포트 : " + location.host + "</p>");
// 호스트 이름과 포트 : 127.0.0.1:8080
document.write("<p>호스트 컴퓨터 이름 : " + location.hostname + "</p>");
// 호스트 컴퓨터 이름 : 127.0.0.1
document.write("<p>앵커 이름 : " + location.hash + "</p>");
// 앵커 이름 :
document.write("<p>디렉토리 이하 경로 : " + location.pathname + "</p>");
// 디렉토리 이하 경로 : /07-JS/%EC%8B%A4%EC%8A%B5/js10/02-location.html
document.write("<p>포트번호 부분 : " + location.port + "</p>");
// 포트번호 부분 : 8080
document.write("<p>프로토콜 종류 : " + location.protocol + "</p>");
// 프로토콜 종류 : http:
document.write("<p>URL 조회부분 : " + location.search + "</p>");
// URL 조회부분 :

location 객체활용(1) : 다른페이지로 이동

  • 'location.href' 값에 다른 페이지의 URL을 대입하면 웹 브라우저의 페이지가 실제로 이동하게 된다.
// <script> 안에 입력
function goNaver() {
        if (confirm("네이버 ㄱㄱ?")) {
            location.href = "http://www.naver.com";
        }
    }

// <body> 안에 입력
<input type="button" value="네이버 ㄱㄱ" onclick="goNaver()" />

location 객체활용(2) : 페이지 새로고침

  • location 객체 안에 포함된 reload()함수는 현재 페이지를 새로고침한다
  • 페이지가 열리면서 onload()를 통해 5자리 일련번호를 생성 후, 재발급 버튼을 눌렀을때
  • 새로고침처리를 하면 인증번호를 새로발급받는 효과
<script type="text/javascript">
    // 두 수 사이의 난수를 리턴하는 함수
    function random(n1, n2) {
        return parseInt(Math.random() * (n2 - n1 + 1)) + n1;
    }

    function authNo() {
        var value = "";
        for (var i = 0; i < 5; i++) { value += random(0, 9); } document.getElementById("auth").innerHTML = value;
    } // 페이지 새로고침 function refresh() { location.reload(); }
    </script>

<body onload="authNo()">
    <p>
        <!-- strong 태그 안이 자바스크립트 출력 부분 -->
        고객님의 인증번호는 <strong id="auth">00000</strong>입니다.
    </p>
    <!-- 페이지 새로고침 이벤트 호출 -->
    <input type="button" value="인증번호 새로 받기" onclick="refresh()" />
</body>

history 객체

// 이전 페이지로 이동
history.back();

// 다음 페이지로 이동
history.forward();

document 객체

특정 HTML요소를 객체 형태로 가져오기

document 객체는 HTML문서를 제어하기 위해서 특정 HTML태그 요소

var some_element = document.gerElementById("id이름");

// 객체화된 HTML요소의 속성을 사용하면 해당 태그에 속해있는
// 내용을 새롭게 설정하거나, 현재 내용을 읽어올 수 있음.
some_element.innerHTML = "<h1>Hello JavaScript</h1>";
var content = some_element.innerHTML;

Element 객체의 style 하위 객체

javascript안에서 객체화 된 HTML요소는 'style'이라는 하위 객체를 내장.
'style'객체를 이용해 javascript를 이용한 css제어 가능.

var some_element = document.getElementById("id이름");
some_element.style.(CSS속성)=("CSS적용값)";

// 구문단축
document.getElementById("id이름").style.(CSS속성)=("CSS적용값");

// 예)
// id가 "box1"인 요소의 width(넓이)를 "500px"로 지정
document.getElementById("box1").style.width="500px";

HTML요소의 CSS클레스 제어

var some_element = document.getElementById("id이름");
some_element.(class이름) = "CSS클래스이름";

// 구문단축
document.getElementById("id이름").(class이름) = "CSS클래스이름";

CSS제어 예제

<!DOCTYPE html>
<html lang="ko">

<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, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
    <title>Hello Javascript</title>
    <!-- javascript start -->
    <style type="text/css">
    .box1 {
        margin: 10px auto;
        border: 5px solid #ccc;
        padding: 30px;
        text-align: center;
    }

    .box2 {
        margin: 10px auto;
        border: 5px solid #ff00ff;
        background-color: #ff0;
        padding: 25px;
        text-align: left;
    }
    </style>
    <script type="text/javascript">
    function setFontColor(color) {
        // id값이 box인 요소
        var box = document.getElementById("box");
        // 글자 색생을 파라미터로 전달된 값으로 설정
        box.style.color = color;
    }

    function serBgColor(color) {
        // id값이 box인 요소의 CSS background-color 속성을 파라미터값으로 설정
        document.getElementById("box").style.backgroundColor = color;
    }

    function setWidth(width) {
        // id값이 box인 요소의 CSS width 속성을 파라미터값으로 설정
        document.getElementById("box").style.width = width;
    }

    function changeClass(cls) {
        // id값이 box인 요소의 클래스를 파라미터값으로 적용
        document.getElementById("box").className = cls;
    }
    </script>
    <!-- javascript end -->
</head>
<!-- 페이지 최초 로딩시, autoNo() 함수 호출 -->

<body>
    <h1>CSS 제어하기</h1>
    <div id="box" class="box1">
        <h1>테스트 영역.</h1>
    </div>
    <input type="button" value="(폰트) red" onclick="setFontColor('#f00')" />
    <input type="button" value="(폰트) green" onclick="setFontColor('#0f0')" />
    <input type="button" value="(폰트) blue" onclick="setFontColor('#00f')" />
    <input type="button" value="(배경) red" onclick="setBgColor('#f00')" />
    <input type="button" value="(배경) green" onclick="setBgColor('#0f0')" />
    <input type="button" value="(배경) blue" onclick="setBgColor('#00f')" />
    <input type="button" value="width=50%" onclick="setWidth('50%')" />
    <input type="button" value="width=auto" onclick="setWidth('auto')" />
    <input type="button" value="box1 클래스 적용" onclick="changeClass('on')" />
    <input type="button" value="box2 클래스 적용" onclick="changeClass('box2')" />
</body>

</html>

'Javascript' 카테고리의 다른 글

JS(String, Array, Math객체)  (0) 2020.07.27
JS(변수, 함수)  (0) 2020.07.23

댓글