본문 바로가기
Coding/Language - JavaSCript

JavaScript - 제7강

by 그냥그렇듯이 2017. 11. 13.
반응형

- 브라우저 오브젝트 -

브라우저 오브젝트는 브라우저에 마련된 기능이나 부품을 조작하는 것입니다.
예) 브라우저 창, 메뉴 표시줄, 작업 표시줄, 문장, 그림, 폼, 프레임 등 많은 브라우저 오브젝트가 있다.

브라우저 오브젝트를 다룰 때 DOM이라는 사양을 사용하면 HTML이나 XML로부터 요소를 지정하여 정보를 추출할 수 있다. Document Object Model의 약자이다. DOM은 HTML문서를 태그나 속성의 계층 구조로 간주하고, 참조할 위치를 지정하는 것이다.

Event 오브젝트는 이벤트 정보에 관한 오브젝트로, 2장에서 배운 이벤트 핸들러와 조합하여 사용한다.

Style 오브젝트는 CSS 프로퍼티를 다룬다. 

Lesson 1

window 오브젝트의 주요 프로퍼티와 메서드는 다음과 같다.

프로퍼티

기능

document

Document 오브젝트를 참조한다. 

history

history 오브젝트를 참조한다. 

location 

location 오브젝트를 참조한다.

 frames

frame 오브젝트의 연상 배열을 참조한다. 

 closed

 창이 닫혀있는지 참조한다.

 opener

자기 자신을 오픈한 창을 참조한다. 

 innerWith

창 안쪽의 너비를 참조 설정한다. 

 innerHeight

창 안쪽의 높이를 참조 설정한다. 

 outerWidth

창 바깥쪽의 너비를 참조 설정한다. 

 status

상태 표시줄의 문자열을 참조 설정한다.

defaultStatus

상태 표시줄의 표준 문자열을 참조 설정한다. 

 name

 창 이름을 참조 설정한다. 

메서드

기능 

open()

새 창을 연다. 

close()

창을 닫는다. 

 moveTo()

창의 위치를 절대값으로 설정한다. 

moveBy()

창의 위치를 상대값으로 설정한다.

 resizeTo()

창의 크기를 절대값으로 설정한다. 

resizeBy()

창의 크기를 상대값으로 설정한다. 

focus()

창을 맨 앞으로 이동한다. 

 blur()

창을 맨 뒤로 이동한다. 

alert()

경고 대화상자 표시 

confirm()

확인 대화상자 표시 

 prompt()

문자 입력 대화 상자를 표시 

setTimeout()

일정 시간마다 반복 처리하는 타이머를 설정한다. 

clearTimeout()

setTimeout()의 타이머를 해제한다. 

 setInterval()

일정 시간 후 한번만 처리하는 타이머를 설정한다. 

 clearInterval()

setInterval()의 타이머를 해제한다. 

Lesson 2


mywin = window.open("http://www.google.co.jp/");


open() 메서드로 새 창 열기 

confirm("다운로드하시겠습니까?");


confirm()메서드로 확인 대화 상자 표시

OK -> true 반환
취소 -> false 반환


 prompt("이름은?", "김ㅇㅇ");


prompt() 메서드로 문자 입력 대화상자 표시


mytime = setInterval9"alert('5초경과')", 5000);

타이머 설정하기

clearInterval(mytime);

타이머 해제하기

Lesson 3

 Document 오브젝트는 브라우저에 표시되는 문자열, 그림, 폼, 링크 등과 같은 HTML문서를 다루는 오브젝트이다.

document 오브젝트의 프로퍼티를 참조하려면 'document.프로퍼티명'으로 기술한다. 주요 프로퍼티는 다음과 같다.

 프로퍼티

기능 

 forms

Form 오브젝트의 연상 배열 

 anchors

Anchor 오브젝트의 연상 배열 

 lastModified

마지막으로 수정한 날짜 참조하기 

 fgColor

문자색 참조 설정

 linkColor

아직 열지 않은 링크의 문자 색 참조 설정 

 alinkColor

활성화된 링크의 문자 색 참조 설정

 vlinkColor

이미 연 링크의 문자 색 참조 설정

 bgColor

배경색 참조 설정

 domain

표시한 페이지의 도메인 참조 

 URL

표시한 페이지의 URL 참조 

 location

표시한 페이지의 URL 참조 설정 

 title

표시한 페이지의 제목 참조 

 cookie

쿠키를 참조 설정 

referrer

분기처의 URL 참조 


메서드를 참조하려면 'document.메서드명'으로 기술한다. 주요 메서드는 다음과 같다.

 

 메서드

기능 

 open()

새 도큐먼트의 출력 시작 

 close()

도큐먼트의 출력 종료 

 clear()

도큐먼트 삭제 

 write()

문자열 출력 

 writeIn()

문자열 출력 및 줄 바꿈 


<!DOCTYPE html>

<html>

  <head>

    <meta charset="utf-8">

    <title>도큐먼트 정보</title>

  </head>

  <body>

    <script type="text/javascript">

      document.open();

      document.write("도메인은",document.domain,"<br>");

      document.write("제목은",document.title,"<br>");

      document.write("최종수정일",document.lastModified);

      document.close();

    </script>

  </body>

</html>



Lesson 4 

Form 오브젝트는 입력 폼이다. <form> 태그와 관련있다.

 

 프로퍼티

기능 

 elements

Element 오브젝트의 연상 배열 

 action

송신처를 참조 설정 

 method

송신 방법을 참조 설정 

 encoding

인코딩 방식 참조 설정 

 length

폼의 부품(element)수를 참조 

 name

폼 이름을 참조 설정 

 target

<form>태그의 target 속성으로
지정한 창 이름을 참조 설정 

 메서드

기능 

 reset()

폼의 입력 내용을 리셋 

 submit()

폼의 입력 내용을 송신 

 <form name="myform" action="/cgi-bin/formobj.cgi" method="GET">이름<input type="text" name="NM"><br>
<input type = "submit" value="보내기"><br>
</form>

 a = document.forms.length;


도큐먼트 안에 있는 폼의 개수를 구하려면 forms의 length프로퍼티를 사용한다. 


b = document.forms[0].length

b = document.myform.length;


하나의 폼에 포함된 부품 개수를 구하려면 forms[참조번호]의 length 프로퍼티를 ghcnfgksek. 


Lesson 5

Element 오브젝트는 폼의 각 부품(element)에 해당하는 것이다.
<input> <textarea> <select> 태그 등을 처리한다.

프로퍼티

기능 

 name

name속성에서 지정한 부품명을 참조 

 type

부품 종류를 참조
"button", "checkbox", "fileupload", "hidden", "password", "radio", "reset", "select-one", "select-multiple", "submit", "text", "textarea" 

 checked

체크 상자나 라디오 버튼의 체크 상태를 참조 설정 

 selected

선택 메뉴의 선택 상태를 참조 설정 

 selectedIndex

선택 메뉴의 선택 번호를 참조 설정 

 value

부품의 값을 참조 설정 

 text

서낵 메뉴에서 선택 항목의 문자열을 참조설정 

 options

선택 메뉴에서 선택 항목의 배열 

메서드 

기능 

 click()

버튼이나 상자 등을 클릭 

 blur()

해당 부품의 초점을 흐리게 

 focus()

해당 부품에 초점 맞추기 

 select()

텍스트 문자를 선택 상대로 만들기 


<form name ="myform" action="/cgi-bin/formobj.cgi" method = "GET">이름<input type="text" name="mytext"><br>
공개합니다.<input type ="checkbox" name="mycheck"><br>
<input type="submit" value="보내기"><br>
</form>

 


a=document.forms[0].elements[0].type; 

a = document.myform.mycheck.type;


부품을 참조하려면 elements[참조번호]를 사용한다. 

Lesson 6 


<select> - select 오브젝트

<option> - option 오브젝트


 


<form name = "myform" action="/cgi-bin/formobj.cgi" method="GET">승차역은?
<select name ="myselect">
    <option value="서울" selected> 서울역 </option>
    <option value="명동"> 명동역</option>
    <option value="강남"> 강남역</option>
</select>
<input type="submit" value="보내기">
</form>



a = document.myform.myselect.options[2].text;


옵션 오브젝트를 참조하려면 select오브젝트의 options프로퍼티를 사용한다. options프로퍼티는 연상배열이다. 


<!DOCTYPE html>

<html>

  <head>

    <meta charset="utf-8">

    <title></title>

    <meta http-equiv="Content-Script-type" content="text/javascript">

    <script type="text/javascript">

      function check()

      {

        for(i=0; i<dcument.form1.length; i++)

        {

          if(document.form1.elements[i].value=="")

          {

            alert("구독을 원할 경우 모든 항목을 입력해주세요.");

            return false;

          }

        }

        return true;

      }

    </script>

  </head>

  <body>

    <h1>주간 매거진 구독 신청서</h1>

    다음 항목을 입력한 후 보내기 버튼을 클릭하세요.<br><br>

    <form name="form1" action="/cgi-bin/formobj.cgi" method="get" onsubmit="return check()">

      이름: <input type="text" name="name"><br>

      주소: <input type="text" name="add" size="55"><br>

      구독합니다: <input type ="checkbox" name="evening" value=1><br><br>

      <input type="submit" name="" value="보내기">

      <input type="reset" name="" value="리셋"><br>

  </body>

</html>


Lesson 7


Location 오브젝트는 window 오브젝트의 location 프로퍼티로 사용할 수 있다.

Location 오브젝트를 사용하면 현재 페이지의 정보 참조와 함께 다른 페이지의 이동도 가능하다.


프로퍼티 

기능 

hash

현재 페이지의 URL의 # 이후를 참조하거나
# 이후의 문자를 변경한다. 

 href

현재 페이지의 URL을 참조하거나 지정한 URL로 이동한다. 

 pathname

현재 페이지의 경로명을 참조 

 host

현재 페이지의 호스트 정보를 참조 

 hostname

현재 페이지의 호스트명을 참조 

 port

현재 페이지의 포트 번호를 참조 

 protocol

현재 페이지의 프로토콜을 참조 

 search

CGI 등에 전달되는 검색부분(?이후 부분)을 참조 설정 

 메서드

기능 

reload()

페이지를 새로 고침 

 replace()

현재 페이지의 이력을 남기지 않고 지정한 페이지로 URL 변경 


<!DOCTYPE html>

<html>

  <head>

    <meta charset="utf-8">

    <title></title>

    <meta http-equiv="Content-Script-Type" content="text/javascript">

  </head>

  <body>

    문자입력: <input type="text"><br>

    <input type="button" value="내 웹페이지" onclick="location='http://idoitforgood.tistory.com'">

    <input type="button" value="URL" onclick="alert(location.href)">

    <input type="button" name="" value="새로고침" onclick="location.reload()">

    </body>

</html>

 

Lesson 8 


DOM(Document Object Model)은 HTML이나  XML의 프로퍼티나 메서드를 참조 및 조작하는 방법을 정의한 것이다.

DOM에서는 HTML 문서를 트리 구조로 관리하며, 각 부품을 '노드' 단위로 나타낸다.

사용 설명서 같은 느낌.


<h1>그림책</h1>

<p id="picbook">이솝우화 동화책</p> 

 

 프로퍼티

 기능 

 innerHTML

텍스트 내용의 참조나 설정을 수행 

 innerText

문자열의 참조나 설정을 수행 

 textContent

문자열의 참조나 설정을 수행 

 childNodes

자식 노드의 배열 

 parentNode

부모 노드를 참조 

 firstChild

맨 처음 자식 노드를 참조 

 lastChild

맨 마지막 자식 노드를 참조 

 previousSibling

노드가 나열되어 있을 때 이전 노드를 참조 

 nextSibling

노드가 나열되어 있을 때 다음 노드를 참조 

 메서드

기능 

 getElementById()

하나의 특정 부품을 추출 

 getElementByTagName()

인수로 지정한 태그의 부품을 배열로 모두 추출하여 반환 

 createElement()

부품을 작성 

 appendChild()

자식 노드를 추가 

 getAttribute()

속성값 참조 

 setAttribute()

속성에 값 설정 


<!DOCTYPE html>

<html>

  <head>

    <meta charset="utf-8">

    <meta http-equiv="content-type" content="text/javascript">

    <script type="text/javascript">

      function getElementsNum() {

        var inp = document.getElementsByTagName("input");

        alert('type="input"의 요소는' + inp.length +'개입니다.');

      }

    </script>

    <title></title>

  </head>

  <body>

    <p id="picbook">이솝우화동화책</p>

    <textarea></textarea><br>

    <input type="submit" name="" value="보내기"><br><br>

    <input type="reset" name="" value="리셋"><br><br>

    <button onclick="getElementsNum()">type="input"의 요소 수는?</button>

    <script type="text/javascript">

      a = document.getElementById("picbook");

      a.innerHTML = "이솝우화";

    </script>

  </body>

</html>


Lesson 9

Event 오브젝트는 발생한 이벤트 정보를 나타내는 오브젝트이다.

프로퍼티

기능

target

이벤트 발생자의 오브젝트를 참조한다. 

 type

이벤트의 종류를 참조한다. 

 modifiers

수식 키의 번호를 참조한다. 

 which

키 코드를 참조한다. 

 keyCode

키 코드를 참조한다. 

 altKey

alt키가 눌려졌는지 참조한다. 

 button

마우스 버튼의 종류를 참조한다. 

 screenX

 화면에서 마우스의 X좌표를 참조한다. 

 screenY

화면에서 마우스의 y좌표를 참조한다. 

 clientX

페이지에서 마우스의 x좌표를 참조한다. 

 clientY

페이지에서 마우스의 y좌표를 참조한다. 

 pageX

페이지에서 마우스의 x좌표를 참조한다. 

 pageY

페이지에서 마우스의 y좌표를 참조한다. 


...

function myEvent(){

     alert("이벤트 종류는" + window.event.type+"입니다.");

}

...

<input type ="button" value="버튼" onclick="myEvent()">

...



...

function myEvent(eve){

    alert("이벤트 종류는"+eve.type+"입니다.");

}

...

<input type="button" value+"버튼" onclick="myEvent(event)">   //event 프로퍼티

...

 

Lesson 10

 style 오브젝트는 DOM 규격으로 정해져 있다.

style 오브젝트를 사용하면 CSS 스타일 프로퍼티 설정이나 참조가 가능하다.

style 오브젝트의 프로퍼티는 HTML 태그의 style 속성으로 처리한다.

프로퍼티

기능

color

문자 색 참조 설정 

 fontFamily

글꼴군 참조 설정 

 fontSize

글꼴 크기 참조 설정 

 fontWeight

글꼴의 굵기 참조 설정 

 fontStyle

글꼴 스타일 참조 설정 

 textDecoration

문자 장식 참조 설정 

 textTransform

영문자의 대,소문자 참조 설정 

 textAlign

 행정렬 참조 설정

 texIindent

첫번째 행의 들여쓰기 참조 설정 

 특정 요소에 스타일을 설정하려면 DOM의 getElementById()메서드 등으로 HTML 요소를 구성한다.


funtion typeChange(n){

  var span = document.getElementById("mystyle");

  if(n==0){

    span.style.color="blue";

    span.style.fontSize="x-Large";

  } else{

    span.style.color="black";

    span.style.fontSize="medium";

  }

}

...

<span id="mystle">스타일 전환</span><br>

<input type="button" onclick="typeChange(0)" value="큰 글자">

<input type="button" onclick="typeChange(1)" value="보통 글자">

...


Lesson 11

브라우저의 이력을 다루는 History오브젝트와 그림을 다루는 Image 오브젝트

History 오브젝트를 사용하면 브라우저의 '앞으로' 버튼이나 '뒤로'버튼과 같은 동작을 수행할 수 있다.


History 오브젝트의 프로퍼티

기능

length 

이력 개수를 참조 

 History 오브젝트의 메서드

기능

 back()

한 페이지 뒤로 돌아간다. 

 forward()

한 페이지 앞으로 간다. 

 go()

지정한 값 만큼 이동한다. 


버튼을 클릭해서 한 페이지 뒤로 이동하기

<input type="button" value="뒤로" onclick="history.go(-1)">

 


Image 오브젝트는 도큐먼트에  <img> 태그로 포함된 그림을 표시한다.

Image 오브젝트는 Document 오브젝트의 images 프로퍼티로 사용할 수 있다.


 Image 오브젝트의 프로퍼티

기능 

 src

그림의 url을 참조 설정 

name

그림의 이름을 참조 설정 

 vspace

텍스트와 그림의 가로 간격을 참조 

 hspace

텍스트와 그림의 세로 간격을 참조 

 border

 그림 틀의 너비를 참조 

 complete

그림 읽기가 끝났는지 참조 

 a = document.images.length

도큐먼트 안에 있는 그림 수를 참조 

 b = document.images[0].src

그림의 url을 참조 

 b=document.myimage.src


<img>태그에서 name속성을 지정했을 때는 그림명으로 참조가능

<img name="myimage">인 경우 


Lesson 12

앵커를 조작하는 Anchor 오브젝트

브라우저 정보를 구하는 Navigator 오브젝트

JavaScript의 앵커는 도큐먼트에서 <a = name="이름">~</a>를 사용하여 지정한 링크이다.

Anchor 오브젝트는 Document 오브젝트의 anchors 프로퍼티로 사용할 수 있다.

Anchor 프로퍼티는 연상배열이다.

 Anchor 오브젝트의 프로퍼티

기능 

name

앵커명을 참조 설정 

 text

앵커의 텍스트를 참조 설정 


...

<name="one">호프</a>

<name="one">스텝</a>

<name="one">점프</a>

...

a=document.anchors.length;

a=document.anchors[0].name;

c=document.anchors[1].text;


 앵커의 이름이나 텍스트를 참조하기

anchors.length; 도큐먼트 안에 있는 앵커는 총 3개이다.

anchors[0].name;   anchors[0] 앵커명은 'one'이다.

anchors[1].text;       anchors[1] 앵커 텍스트는 '스텝'이다.

 Navigator 오브젝트는 사용자의 브라우저나 OS 환경에 관한 정보를 구하는 오브젝트이다.참조할 수 없을 때는 undefined를 반환한다.

 Navigator 오브젝트의 프로퍼티

기능 

 appName

애클리케이션명을 참조 

 appVersion

브라우저의 버전 참조 

 appCodeName

브라우저 코드명 참조 

 platform

OS 기종 참조 

 userAgent

브라우저의 에이전트명(브라우저의 종류나 버전 등)을 참조 

 Navigator 오브젝트의 메서드

기능 

 javaEnabled()

Java 애플릿을 사용할 수 있는지 조사 


document.write(navigator.userAgent);


브라우저의 에이전트명을 표시 

 예제) 크기 등을 지정하여 새로운 창 열기


<!DOCTYPE html>

<html>

  <head>

    <meta charset="utf-8">

    <title></title>

    <script type="text/javascript">


    function init(){

      document.form1.txtURl.value="http://idoitforgood.tistory.com";

      document.form1.txtWidth.value="600";

      document.form1.txtHeight.value="480";

      document.form1.txtClose.disabled= true;

    }


    function openWindow(){

      var errMsg = errorCheck();

      if(errMsg!=""){

        alert(errMsg+"가 입력되지 않았습니다.");

        return;

      }


      var url=document.form1.txtUrl.value;

      var width=document.form1.txtWidth.value;

      var height=document.form1.txtHeight.value;


      if(confirm("새창에서 열겠습니까?")){

        mywin = window.open(url,"","width="+width+",heigh=t"+height);

        document.form1.btnClose.disabled=false;

      }


    }

    function closeWindow()

    {

      mywin.close();

      document.form1.btnClose.disabled=true;

    }


    function errorCheck(){

      var errMsg="";


      for(i=0, i<document.form1.length; i++){

        if(document.form1.elements[i].type=="text"&&document.form1.elements[i].value==""){

          switch(document.form1.elements[i].name){case "txtUrl":errMsg +="[URL]";

        break;

      case "txtWidth":

        errMsg +="[너비]";

        break;

      case "txtHeight":

        errMsg +="[높이]";

        break;

    }

        }

      }

      return errMsg;

    }


    </script>

  </head>

  <body onload="setDefaultValue()">

    <form name="form1">

      <input type="button" name="btnOpen" value="Open" onclick="openWindow()">

      <input type="button" name="btnClose" value="Close" onclick="closeWindow()">

      <br>

      URL: <input type="text" name="txtUrl"><br>

      너비: <input type="text" name="txtWidth"><br>

      높이: <input type="text" name="txtHeight"><br>

    </form>

  </body>

</html>


 1. 폼에서 여행 패키지를 선택하는 프로그램을 작성하라. '확인' 버튼을 클릭하면 선택 정보가 대화상자에 나타난다.


<!DOCTYPE html>

<html>

  <head>

    <meta charset="utf-8">

    <meta http-equiv="Content-Script-Type" content="">


    <script type="text/javascript">

      function myConfirm(){

        str="이름: "+document.form1.txtName.value+"\n";


        index=document.form1.selMoneyPlan.selectedIndex;

        str+="출발월:"+document.form1.selMoneyPlan.options[index].text+"\n";


        for(i=0; i<=3; i++){

          if(document.form1.r1[i].checked){

            if(i==0)

              loc="유럽";

            else if(i==1)

              loc="아시아";

            else if (i==2)

              loc="하와이, 오세아니아";

            else if(i==3)

              loc = "미국";

            else

              loc = "미선택";

            str +="목적지: "+loc+"\n";

            break;

            }

          }

          index=document.form1.selMoneyPlan.selectedIndex;

          str+="예산:" +document.form1.selMoneyPlan.options[index].text;


          a=confirm(str);

        }

      </script>

      <title></title>

  </head>

  <body>

    <h1>여행 신청서</h1>

    다음항목을 입려갛ㄴ 후 '확인'버튼을 누르세요.<br><br>


    <form name="form1">


      이름: <input type="text" name="txtName"><br><br>


      출발월: <select name = "selMonth">

        <option value="01" selected>1월</option>

        <option value="02">2월</option>

        <option value="03">3월</option>

      </selcted><br><br>


      목적지 : <br><input type="radio" name="r1" value="1">유럽<br>

      <input type="radio" name="r1" value="2">아시아<br>

      <input type="radio" name="r1" value="3">하와이,오세나이아<br>

      <input type="radio" name="r1" value="4">미국<br>


      예산: <select name="selMoneyPlan">

        <option value="01" selected>50-100만원</option>

        <option value="02" selected>100-150만원</option>

        <option value="03" selected>150-200만원</option>

      </select><br><br>


      <input type="button" value="확인" onclick="myConfirm()">

      <input type="reset" value="다시작성"><br>


      <script type="text/javascript">

      //a.document.getElementById("travel");


      </script>

  </body>

</html>



댓글