텍스트박스(<input type="text"> 태그) 객체 다루기



1. value 속성.


//Script40.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

<script type="text/javascript">

function myFunc() {

var id = document.getElementById("id");

var pw = document.getElementById("pw");

var msg = document.getElementById("msg");

msg.style.display = "none";

var result = document.getElementById("result");

//공백 제거 기능 추가 필요.-> 사용자 함수 구현 -> trim()함수 (자바스크립트에는 이 함수가 없음.)

if (id.value == "" || pw.value == "") {

msg.style.display = "inline";

id.focus();

} else {

if(id.value=="admin" && pw.value =="1234") {

result.innerHTML = "회원으로 로그인 되었습니다.";

} else {

result.innerHTML = "아이디 또는 패스워드가 틀렸습니다.";

}

}

}

</script>

</head>

<body>

<div>

<h2>텍스트 박스 객체 다루기</h2>

<form>

아이디<input type="text" id="id">

패스워드<input type="password" id="pw">

<input type="button" value="로그인" onclick="myFunc()">

<span id="msg" style="color:red; display:none;">아이디 또는 패스워드를 채워야 합니다.</span>

</form>

<h3>출력----------------------</h3>

<div id="result"></div>

</div>

</body>

</html>




2. readonly, disabled 속성


//Script41.html


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

<script type="text/javascript">

function myCheck(obj) {

var id = document.getElementById("id");

var pw = document.getElementById("pw");

var btn = document.getElementById("btn");

if(obj.checked) {

//약관동의 선택한 경우

//아아디, 패스워드 입력가능상태로 변경

//회원가입버튼을 사용가능상태로 변경

id.readOnly = false;

pw.readOnly = false;

btn.disabled = false;

} else {

//약관동의 취소한 경우

//아이디, 패스워드에 입력된 데이터 삭제

//아아디, 패스워드 입력 불가 상태로 변경

//회원가입버튼을 사용 불가 상태로 변경

id.value = "";

pw.value = "";

id.readOnly = true;

pw.readOnly = true;

btn.disabled = true;

}

}

function myFunc() {

var id = document.getElementById("id");

var pw = document.getElementById("pw");

//공백 제거 기능 추가 필요.-> 사용자 함수 구현 -> trim()함수 (자바스크립트에는 이 함수가 없음.)

if (id.value == "" || pw.value == "") {

msg.style.display = "inline";

id.focus();

} else {

result.innerHTML = "회원으로 가입되었습니다.";

}

}

</script>

</head>

<body>

<div>

<h2>텍스트 박스 객체 다루기</h2>

<form>

<input type="checkbox" id="check" onclick="myCheck(this)"> 약관동의<br>

아이디<input type="text" id="id" readOnly="readOnly"><br>

패스워드<input type="password" id="pw" readOnly="readOnly"><br>

<input type="button" id="btn" value="회원가입" onclick="myFunc()" disabled="disabled">

<span id="msg" style="color:red; display:none;">아이디 또는 패스워드를 채워야 합니다.</span>

</form>

<h3>출력----------------------</h3>

<div id="result"></div>

</div>

</body>

</html>






선택목록(<select> 태그) 객체 다루기



1. selected 속성, onchange 이벤트 지원


//Script42.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

<script type="text/javascript">


function myFunc(obj) {

var emailAddr = obj.options[obj.selectedIndex].value;

var email02 = document.getElementById("email02");

if (emailAddr == "2") {

//직접입력.

email02.value = "";

email02.readOnly = false; //Only 에서 O는 대문자 표기

email02.focus();

} else {

email02.readOnly = true;

email02.value = emailAddr;

}

}


</script>

</head>

<body>

<div>

<h2>선택목록 객체 다루기</h2>

<form>

이메일

<input type="text" id="email01">

@

<input type="text" id="email02" readOnly="readOnly">

<select id="emailAddr" onchange="myFunc(this)">

<option value="">선택</option>

<option value="naver.com" selected="selected">naver.com</option>

<option value="nate.com">nate.com</option>

<option value="hanmail.net">hanmail.net</option>

<option value="2">직접입력</option>

</select>

</form>

</div>


</body>

</html>



//Script43.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>


<script type="text/javascript">

function myFunc(obj) {

var jikwi = obj.options[obj.selectedIndex].value;

var msg = document.getElementById("msg");

var basicpay = document.getElementById("basicpay");

msg.style.display = "none";

switch(jikwi) {

case "1":

msg.style.display = "inline";

msg.innerHTML = "100만원 이상";

break;

case "2":

msg.style.display = "inline";

msg.innerHTML = "120만원 이상";

break;

case "3":

msg.style.display = "inline";

msg.innerHTML = "200만원 이상";

break;

}

basicpay.focus();

}

</script>


</head>

<body>

<div>

<h2>선택목록 객체 다루기2</h2>

<form>

직위

<select id="jikwi" onchange="myFunc(this)">

<option value="1">사원</option>

<option value="2">대리</option>

<option value="3">과장</option>

</select><br>

기본급

<input type="text" id="basicpay" style="width:80px;">

<span id="msg" style="color:red;display:none;"></span>

<br>

<input type="button" value="직원등록">

</form>

</div>

</body>

</html>






윈도우(브라우저 자신) 객체 다루기



1. window 객체는 자바스크립트에서는 브라우저 자신을 의미.


2. 최상위 객체. 생략 가능.


3. 팝업창을 생성할 때 window.open(), window.close() 사용.


//Script44.html -> 부모창


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

<script type="text/javascript">

function myPopup() {

window.open("Script44_1.html", "popup", "width=200, height=400");

//window.open("http://www.gmarket.co.kr/popup/indexPopunder.html", "popup", "width=400, height=450");

}

</script>

</head>

<body onload="myPopup()">

<div>

<h2>윈도우 객체 다루기</h2>

<p>

<a href="javascript:myPopup()" >로그인 전용 화면</a>

</p>

</div>

</body>

</html>





//Script44_1.html -> 자식창


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

</head>

<body>

<div>

<h3>광고 페이지</h3>

<a href ="javascript:window.close();">close</a>

</div>

</body>

</html>






DOM (Document Object Model)


1. HTML 태그를 객체로 받아들여서 객체를 다루는 명령.


2. 태그 수정, 삭제, 추가 등이 가능하다.


//DOM01.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

<script type="text/javascript">


function myFunc() {

//Node - 엘리먼트, 속성 등의 객체

//Element - 태그 객체

//Attribute - 속성 객체

var parent = document.getElementById("target");


var str = "";

/*

var nodeList = parent.childNodes;

str += "nodeList.length : " + nodeList.length + "<br>";

for (var a=0; a<nodeList.length; a++) { 

str += "nodeList[" + a + "].nodeType : " + nodeList[a].nodeType + "<br>";

str += "nodeList[" + a + "].nodeValue : " + nodeList[a].nodeValue + "<br>";

}

//nodeType이 1이면 엘리먼트

//nodeType이 2이면 속성

//nodeType이 3이면 텍스트

var pnode = nodeList[0]; //첫 번째 <p> 엘리먼트

var textnode = pnode.childNodes[0]; // <p> 엘리먼트의 텍스트

str += "textnode.nodeValue : " + textnode.nodeValue;  // <p> 엘리먼트의 텍스트 값

*/

//순차적으로 텍스트 노드를 접근해서 출력

var pNodes = parent.childNodes;

for (var a=0; a<pNodes.length; a++) {

str += pNodes[a].firstChild.nodeValue + "<br>";

}

var result = document.getElementById("result");

result.innerHTML = str;


}


</script>

</head>

<body>

<div>

<h2>DOM</h2>

<form>

<input type="button" value="DOM테스트" onclick="myFunc()">

</form>


<div id="target"><p>첫번째 문장</p><p>두번째 문장</p><p>세번째 문장</p></div>

<h2>출력 --------------------------</h2>

<div id="result"></div>

</div>

</body>

</html>



//DOM02.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

<script type="text/javascript">


function myFunc(status) {


var ulNode = document.getElementById("subjectLists");

var liNodes = ulNode.childNodes;

for (var a=0; a<liNodes.length; a++) {

var inputNode = liNodes[a].firstChild;

if(inputNode.nodeType == 1) {

inputNode.checked = status;

}

}

}


</script>

</head>

<body>

<div>

<h2>DOM 테스트 2</h2>

<div>

<a href="javascript:myFunc(true)">전체선택</a> / <a href="javascript:myFunc(false)">전체해제</a>

</div>

<form>

<h3>강의 가능 과목</h3>


<!-- <ul> 태그에서 <li> 태그 입력시 줄바꿈 처리하지 말것-->

<ul id="subjectLists" style="list-style:none"><li><input type="checkbox">Java SE</li><li><input type="checkbox">Oracle</li><li><input type="checkbox">JSP &amp; Servlet</li></ul>

</form>

</div>

</body>

</html>





//DOM03.html







문제) 자바스크립트의 DOM 기능을 이용해서 방명록을 작성할 것.

-> wedding.html 파일 및 img 폴더를 이클립스에 복사해서 사용할 것.

-> 번호 및 날짜는 자바스크립트에서 자동 입력되도록 할 것.


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>홍길동, 박길순 결혼식 청접장</title>

<style type="text/css">

.style1 {color:red;}

a {

text-decoration: none;

color:gray;

}

a:hover {

text-decoration: underline;

color:red;

}

</style>

<script type="text/javascript">

function textCountCheck(obj, target) {

var len = obj.value.length;

var targetObj = document.getElementById(target);

targetObj.innerText = len;

}

//테이블 동적 생성

function guestFormSubmit() {

var count = 2;

var name = document.getElementById("uname");

var content = document.getElementById("content");


var trNode = document.createElement("tr");

var tdNode = createTdNode(count++);

tdNode.setAttribute("align", "center");

trNode.appendChild(tdNode);


tdNode = createTdNode(name.value);

tdNode.setAttribute("align", "center");

trNode.appendChild(tdNode);


trNode.appendChild(createTdNode(content.value));


tdNode = createTdNode(getSysTime());

tdNode.setAttribute("align", "center");

trNode.appendChild(tdNode);


tdNode = document.createElement("td");

tdNode.appendChild(createDelBtnNode());

tdNode.setAttribute("align", "center");

var tableNode = document.getElementById("result");

var tbodyNode = tableNode.firstChild;

tbodyNode.appendChild(trNode);


name.value = "";

content.value = "";

name.focus();

}

function createTdNode(val) {

//<td>val</td>

var txtNode = document.createTextNode(val);

var tdNode = document.createElement("td");

tdNode.appendChild(txtNode);

return tdNode;

}

//시스템 시간찍기

function getSysTime() {

        var d = new Date();

        var s =

          leadingZeros(d.getHours(), 2) + ':' +

          leadingZeros(d.getMinutes(), 2) + ':' +

          leadingZeros(d.getSeconds(), 2);

        return s;

    }

    //숫자의 자리수 를 0으로 채우기

    function leadingZeros(n, digits) {

    var zero = '';

        n = n.toString();

        if (n.length < digits) {

        for (i = 0; i < digits - n.length; i++)

        zero += '0';

        }

        return zero + n;

    }

    

    //테이블 삭제 전용 버튼 처리 함수

function createDelBtnNode() {

var btn = document.createElement("input");

btn.setAttribute("type", "button");

btn.setAttribute("value", "삭제");

btn.onclick = function() {

deleteNode(this);

};

return btn;

}

function deleteNode(obj) {

if (confirm("삭제할까요?")) {

var tdNode = obj.parentNode;

var trNode = tdNode.parentNode;

var tbodyNode = trNode.parentNode;

tbodyNode.removeChild(trNode);

}

}

</script>

</head>

<body>

<div>

<div><a href="">[Admin Login]</a></div>

<img src="img/WeddingPhoto.jpg" width="400" height="300">

<div>

<h3>홍길동, 박길순의 결혼식 청첩장 사이트</h3>

일시 : 2013.01.23 <span class="style1">(D-48</span>)</span><br> 

장소 : KH정보교육원<br> 

찾아오시는 방법 : 지하철 2호선 당산역 3번 출구 동화빌딩 3층<br>

<br>

</div>

<div>방명록에 글을 남겨주세요~</div>

<form>

<table>

<tbody>

<tr>

<td>글쓴이</td>

<td>

<input type="text" id="uname" name="uname"

onkeyup="textCountCheck(this, 'nameLen')">

(<span id="nameLen" class="style1">0</span>/50)

</td>

</tr>

<tr>

<td>글내용</td>

<td>

<input type="text" size="80" id="content" name="content"

onkeyup="textCountCheck(this, 'contentLen')">

(<span id="contentLen" class="style1">0</span>/200)

<a href="javascript:guestFormSubmit()">[글쓰기]</a>

</td>

</tr>

</tbody>

</table>

</form>

<table cellpadding="3" border="1" id="result"><tbody><tr><th width="60">번호</th><th width="100">글쓴이</th><th width="400">글내용</th><th width="180">작성일</th></tr><tr><td align="center">1</td><td align="center">주인장</td><td>많은 참석 바랍니다.</td><td align="center"></td></tr></tbody></table>

</div>

</body>

</html>






사용자 정의 객체




1. 객체는 사용자 정의 객체와 내장 객체로 구분.


2. 객체의 멤버인 속성과 메소드는 .(dot) 연산자를 이용해서 접근.


3. 사용자 정의 객체 형식


//객체명은 첫 글자를 대문자로 표기

function 객체명(인자리스트) {

//속성 정의

this.멤버명 = 값;


//메소드 정의

this.메소드명 = function(인자리스트) {

//실행문;

};

}



//객체 생성

new 변수 = new 객체명();


//접근 방법

변수.멤버명

변수.메소드명();


변수.멤버명 = 값;   -- setter의 역할과 비슷.

var 변수 = 변수.멤버명;  -- getter의 역할과 비슷.


변수.메소드명(); -- 리턴값없을때 실행하고 끝

var 변수 = 변수.메소드명(); -- 리턴값있을때 실행과 동시에 리턴값 변수에 저장




//OOP01.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

<script type="text/javascript">


function myFunc() {

//사용자 객체 정의

function Blog(body, date) {

//속성 정의

this.body = body; //매개변수 body를 속성에 셋팅

this.date = date; //매개변수 date를 속성에 셋팅

}

//객체 생성 -> 배열에 저장

var blog = [new Blog("사용자 정의 객체 테스트", "2012-11-13") // 배열 선언과 동시에 값지정.

          ,new Blog("생성자 작성시 첫글자는 대문자", "2012-11-14")

  ,new Blog("new연산자를 이용해서 객체생성", "2012-11-15")];

var str = "";

//객체의 하위 멤버(속성) 접근

for (var a=0; a<blog.length; a++) {

str += blog[a].body + " / ";

str += blog[a].date + "<br>";

}

var result = document.getElementById("result");

result.innerHTML = str;

}


</script>

</head>

<body>

<div>

<h2>사용자 정의 객체</h2>

<form>

<input type="button" value="사용자 정의 객체" onclick="myFunc()">

</form>

<h3>출력--------------------</h3>

<div id="result"></div>

</div>

</body>

</html>



//OOP02.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

<script type="text/javascript">


function myFunc() {

//객체 생성 - 현재 시스템 날짜 리턴

var date = new Date();

//Date 객체의 하위 멤버(메소드) 접근

var str = "";

str += date.getFullYear() + "<br>";

str += (date.getMonth()+1) + "<br>";

str += date.getDate() + "<br>";

str += date.getDay() + "<br>";

str += date.getTime() + "<br>";

str += date.toDateString() + "<br>";

str += date.toLocaleDateString() + "<br>";

str += date.getFullYear() + "-" + (date.getMonth()+1) + "-" + date.getDate();

//YYYY-MM-DD 형식 문자열 -> 사용자 정의 형식 필요

var result = document.getElementById("result");

result.innerHTML = str;

}


</script>

</head>

<body>

<div>

<h2>내장 객체</h2>

<form>

<input type="button" value="내장 객체" onclick="myFunc()">

</form>

<h3>출력--------------------</h3>

<div id="result"></div>

</div>

</body>

</html>



//OOP03.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

<script type="text/javascript">


function myFunc() {

//사용자 객체 정의

function Blog(body, date) {

//속성 정의

this.body = body; //매개변수 body를 속성에 셋팅

this.date = date; //매개변수 date를 속성에 셋팅

/* //메소드 정의 -> 인스턴스 형식

//YYYY-MM-DD 형식의 날짜 문자열

this.toUserDateString = function(date) {

var result = date.getFullYear() + "-" + (date.getMonth()+1) + "-" + date.getDate();

return result;

}; */

//메소드 정의 -> 스태틱 형식 (prototype)

//YYYY-MM-DD 형식의 날짜 문자열

Blog.prototype.toUserDateString = function(date) {

var result = date.getFullYear() + "-" + (date.getMonth()+1) + "-" + date.getDate();

return result;

};

}

//객체 생성 -> 배열에 저장

var blog = [new Blog("사용자 정의 객체 테스트", new Date("2012-11-13")) // 배열 선언과 동시에 값지정.

          ,new Blog("생성자 작성시 첫글자는 대문자", new Date("2012-11-14"))

  ,new Blog("new연산자를 이용해서 객체생성", new Date("2012-11-15"))];

var str = "";

//객체의 하위 멤버인 날짜를 기준으로 정렬 추가

blog.sort(

function(obj1, obj2) {

//return obj1.date - obj2.date; //ACS

return obj2.date - obj1.date; //DESC

}

);

//객체의 하위 멤버(속성, 메소드) 접근

for (var a=0; a<blog.length; a++) {

str += blog[a].body + " / ";

str += blog[a].toUserDateString(blog[a].date) + "<br>";

}

var result = document.getElementById("result");

result.innerHTML = str;

}


</script>

</head>

<body>

<div>

<h2>사용자 정의 객체</h2>

<form>

<input type="button" value="사용자 정의 객체" onclick="myFunc()">

</form>

<h3>출력--------------------</h3>

<div id="result"></div>

</div>

</body>

</html>



WRITTEN BY
빨강꼬마

,