오늘의 코딩순서
(폴더: oJavaScript)
02폴더
- array01
- array02
- link
- math03
- object01
- object02
- object03
- object04
- object05
- object06
- string01
- string02
- string03
03폴더
- dom01
- dom02
- dom03
- dom04
- function01 + function02
- function03
04폴더
- bubblingEvent
- capturingEvent
- domBgColor
- domFgColor
- domingChg2
- domimgMenu
- domInterval01
- ⭐⭐⭐⭐⭐domJson
오늘의 코딩 포인트
<02폴더>
1) array01
- document.write(<br>): 자바와의 다른점===> 순서를 밑으로 내려도 변수값이 출력된다!
- length: 자릿수
2) array02
3) link
- 링크넣는법
<script type="text/javascript">
document.write("네이버".link("https://www.naver.com"));
document.write("<p>");
document.write("중앙".link("http://choongang.co.kr"));
document.write("<p>");
document.write("다음".link("https://www.daum.net"));
</script>
4) math03
- Math.random()*7: 7보다 작은 i의 값이 랜덤하게 변수에 입력되어 그 값에 맞는 값(여기서는 이미지)들이 랜덤하게 출력됨
<script type="text/javascript">
var banner = new Array();
for(var i=0 ; i<7 ; i++) {
banner[i] = "../images/"+i +".jpg";
}
var ranNumber = Math.random()*7;
document.write("ranNumber = "+ranNumber);
var ran = Math.floor(ranNumber);
document.write("<br>ran="+ran);
document.write("<img src="+banner[ran]+">");
</script>
5) object01
- 객체: 변수의 이름은 한글말고 영어로! 한 단어면 모를까, 한 단어여도 중간에 띄어쓰기같은게 들어가면 오류가 나서 출력이 안된다
6) object02
- 프로퍼티?: property==> 다른 값과 어떤 값이 연결되어 있을때 이 '어떤 값'을 프로퍼티라고 부름
데이터 구조와 연관된 속성을 나타냄
ex) 문자열에는 length라는 property가 포함되어 있는데 이 property는 문자열 안에 있는 문자의 양을 정수로 나타낸 값을 담고 있음
<script type="text/javascript">
var person = {
name : "홍길동", // 이름 프로퍼티를 정의
birthday: "030219", // 생년월일 프로퍼티를 정의
pId : "1234567", // 개인 id 프로퍼티를 정의
/* 생년월일과 개인 id를 합쳐서 주민번호로 반환 */
fullId : function() {
return this.birthday + this.pId;
}
}
document.write("person.name-->"+person.name+"<p>");
document.write("person.fullId()-->"+person.fullId()+"<p>");
</script>
7) object03
- Append: 컨텐츠를 선택된 요소 내부의 끝 부분에서 삽입, 선언을 한 후에 append가 가능하다
- delete: delete 선언을 한 뒤 삭제가 가능함
<script type="text/javascript">
var dracura = {
name : "김준수",
age : 38,
addr : "드라큘라"
}
for (var key in dracura)
document.write("1."+key+":"+dracura[key]+"<br>");
//2. Append: 선언을 한 후에 append가 가능하다
dracura.phone = "01022223333";
document.write("<P>");
for(var key in dracura)
document.write("2."+key+":"+dracura[key]+"<br>");
//3.Delete
delete(dracura.addr);
document.write("<P>");
for(var key in dracura)
document.write("3."+key+":"+dracura[key]+"<br>");
</script>
8) object04
- this
- 선생님: this를 보면 new 생성자를 생각하자/ 멤버변수, 메소드, 함수들을 생성할 수 있다
- 자기 자신의 메모리를 가리키는 역할
- 이 주소를 참조 타입인 클래스 변수에 저장해두면 변수를 통해 객체를 사용할 수 있다
- 동일한 클래스 내에서 객체 자신의 또 다른 생성자를 호출하는 데 사용
<script type="text/javascript">
function Dog(color, name, age) {
this.color = color;
this.name = name;
this.age = age;
}
var myDog = new Dog("흰색", "하루", 1);
myDog.family = "시베리안 허스키"; //품종에 관한 프로퍼티를 추가
myDog.breed = function() { //털색을 포함한 품종을 반환해 주는 메소드를 추가함
return this.color + " " +this.family;
}
myDog.nameAge = function() {
return this.name + " " +this.age;//나이를 포함한 품종을 반환해 주는 메소드를 추가함
}
document.write("우리 집 강아지는" + myDog.breed() + "입니다.");
document.write("<p>우리 집 강아지 이름과 나이는 " + myDog.nameAge() + "입니다.");
</script>
</head>
<body>
<h1>object04</h1>
<p>생성자 함수(constructor function)와 일반 함수에 기술적인 차이는 없음.
<br> 다만 생성자 함수는 아래 두 관례를 따름
<br> 함수 이름의 첫 글자는 대문자로 시작.
<br> 반드시 'new' 연산자를 붙여 실행
<br> 생성자 함수엔 보통 return 문이 없음.
<br> 반환해야 할 것들은 모두 this에 저장되고, this는 자동으로 반환되기 때문에
<br> 반환문을 명시적으로 써 줄 필요가 없음
</body>
</html>
9) object05: 2종의 데이터를 섞어 쓰는 방법
- length뒤에는 ()를 쓰지 않음
- push: 배열의 끝에 하나 이상의 항목을 추가하는 함수
- pop: 배열의 가장 마지막 요소를 제거함
- shift: 배열의 제일 첫 요소를 제거함
- unshift: 하나 이상의 요소를 배열의 가장 앞에 추가
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
var arr = [1, true, "JavaScript"];
document.write("arr.length-> " + arr.length+"<br>");
//length뒤에는 ()를 쓰지 않음
document.write("1. arr-> " + arr+"<br>");
document.write("arr.push('자바스크립트')-> " + arr.push("자바스크립트")+"<br>");
document.write("2. arr-> " + arr+"<br>");
document.write("arr.push(2.'거짓')-> " + arr.push(2,"거짓")+"<br>");
document.write("3. arr-> " + arr+"<br>");
document.write("arr.pop()-> " + arr.pop()+"<br>");
// pop: 배열의 가장 마지막 요소를 제거함
document.write("arr.length-> " + arr.length+"<br>");
document.write("arr-> " + arr+"<hr>");
document.write("arr.shift()-> " + arr.shift()+"<br>");
// shift: 배열의 제일 첫 요소를 제거함
document.write("arr.length-> " + arr.length+"<br>");
document.write("arr-> " + arr+"<hr>");
document.write("arr.unshift('servlet')-> " + arr.unshift("servlet")+"<br>");
// unshift: 하나 이상의 요소를 배열의 가장 앞에 추가
document.write("arr.length-> " + arr.length+"<br>");
document.write("arr-> " + arr+"<hr>");
</script>
</head>
<body>
<h1>object05</h1>
</body>
</html>
10) object06
- join(): 배열의 모든 요소를 연결해 하나의 문자열로 만듬, space 입력값(띄어쓰기)까지 배열처리를 해줌
하지 않으면 값이 비어버림 - slice(): 배열의 특정 범위의 요소를 잘라내어(slice) 추출한 결과를 새로운 배열로 반환하는 함수
<script type="text/javascript">
//Index 0 1 2 3
var arr = [1, true, "JavaScript", 'End'];
//join을 하지 않으면 값이 비어버린다
document.write("arr.join()->" +arr.join() + "<br>");
//join을 하면 space입력값(띄어쓰기)까지 배열처리를 해준다
document.write("arr.join(' + ')->" +arr.join(' + ') + "<br>");
document.write("arr.join(' ')->" +arr.join(' ') + "<br>");
document.write("arr.join('')->" +arr.join('') + "<hr>");
document.write("arr.slice(1, 2)->" +arr.slice(1, 2) + "<br>");
//join을 하지 않으면 끝까지 나와버린다
document.write("arr.slice(1, 3)->" +arr.slice(1, 3) + "<br>");
document.write("arr.slice(1)->" +arr.slice(1) + "<hr>");
document.write("arr.toString()->" +arr.toString() + "<hr>");
</script>
11) string01
- \: \ 다음에 나오는 특수문자를 인식해줌
- ||: 논리연산자, 둘 중 하나 이상이 참이면 참을 반환
- ==: 동등 연산자, 피연산자들끼리 비교해서 서로 동일한지 확인하는 연산자
- do-while문: 조건문을 판단하기 전에 do 블록의 코드를 참과 거짓을 따지지 않고 일단 먼저 실행, 그 다음에 조건문을 판단하여 결과가 true면 do 블록을 다시 실행 ===> 이 과정을 계속해서 반복함
다만, while문이 false면 실행되지 않음
do{
//반복할 코드
}
while(조건문);
<script type="text/javascript">
var len = 0;
do {
var str = prompt("6자 이하 입력하세요","");
len = str.length;
if(len==0)
alert("입력 안 했네");
}while(len> 6 || len<1);
document.write("입력한 글 : \" " + str +"\", 길이 : " + len + "<p>");
</script>
12) string02
- toUpperCase: 전부 대문자로 변환하기
- toLowerCase: 전부 소문자로 변환하기
- substring (x,y): 인덱스 x부터 y바로 앞인 y-1의 값까지 자른다
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
//컴퓨터언어는 인덱스 순서를 매길 때 0이 아닌, 1부터 시작!
// 012345678
var a = "Girl's Generation";
var b = a.toUpperCase(); //전부 대문자로 변환하기
document.write(b+"<p>");
var c = a.toLowerCase(); //전부 소문자로 변환하기
document.write(c+"<p>");
var d = a.substring(3,8); //인덱스 3부터 8바로 앞인 7의 값까지 자른다
document.write(d);
</script>
</head>
<body>
<h1>string02</h1>
</body>
</html>
13) string03
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
// 01234567890
//띄어쓰기까지 인덱스 값으로 쳐줌
var str = "처음엔 친구였어. 친구 풋풋한 동갑내기 친구";
document.write("<center>");
document.write("indexOf( '친' ) : " + str.indexOf( '친' )+"<hr>");
document.write("lastIndexOf('친') : " + str.lastIndexOf(' 친 ')+"<hr>");
document.write("</center>");
</script>
</head>
<body>
<h1>string03</h1>
</body>
</html>
<03폴더>
14) dom01 (document object model)
- function: function을 먼저 만들어야 even 자리의 값이 제대로 실행됨, function이 없다면 이 자리를 건너뛰고 아래의 even으로 건너가버림
- getElementById: 엘리먼트를 반환하는 메소드, HTML 문서 내에서 주어진 문자열과 값이 일치하는 id 속성을 가진 요소 객체를 반환
- element: node의 한 종류, 주로 <p>, <div> 같은 태그를 사용해서 작성된 노드
- innerHTML: innerHTML은 'Element'의 속성으로, element내에 포함 된 HTML 또는 XML 마크업을 가져오거나 태그와 함께 입력하여 내용을 직접 설정할 수 있다
innerHTML을 사용하면 내부 HTML 코드를 JavaScript 코드에서 새 내용으로 쉽게 변경할 수 있다
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
function chgItem() {
//function을 먼저 만들어야 even자리의 값이 제대로 실행됨
//function이 없다면 이 자리를 건너뛰고 아래의 even으로 건너가버림
var setItemId = document.getElementById("even");
//해당 ID를 가지고 있는 첫번째 요소만 선택
//setItemId: 태그객체 자기 자신을 선언
setItemId.style.color = "orange";
//해당 name를 가지고 있는 요소 선택
}
function chgText() {
var setPId = document.getElementById("changeText");
setPId.innerHTML = "changeText 문장 대체";
}
</script>
</head>
<body>
<h1>dom01</h1>
<h4>id 이용 선택</h4>
<ul>
<li> 첫번째 Item</li>
<li id="even"> 두번째 Item</li>
<li> 세번째 Item</li>
<li> 네번째 Item</li>
<li> 5번째 Item</li>
</ul>
<p id="changeText">교환</p>
<button onclick="chgItem()">even</button><p>
<button onclick="chgText()">changeText</button><p>
</body>
</html>
15) dom02
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
function chgRedColor(pColotText) {
var str = document.getElementById("text");
str.style.color = "red";
str.innerHTML = pColotText
}
function chgOrangeColor(pColotText) {
var str = document.getElementById("text");
str.style.color = "orange";
str.innerHTML = pColotText
}
</script>
</head>
<body>
<h1>dom02 Event 통해 수행</h1>
<p id="text">기본색 검정</p> <!-- 위의 str이 이거 -->
<button ondblclick="chgRedColor('빨간색')">빨간색</button><p>
<!-- ondblclick: 더블클릭해라 -->
<button onclick="chgOrangeColor('오렌지색')">오렌지색</button>
</body>
</html>
16) dom03
- var setFirstItem = document.getElementsByName("first");
: name 속성값이 "first"인 모든 요소를 선택 - for (var i = 0; i < setFirstItem.length; i++)
: 선택된 모든 요소의 텍스트 색상을 변경함 - setFirstItem.item(i).style.color : 객체배열, 배열값처럼 설정 가능
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
function chgColor() {
var setFirstItem = document.getElementsByName("first");
//name 속성값이 "first"인 모든 요소를 선택
console.log('setFirstItem'+setFirstItem);
for (var i = 0; i < setFirstItem.length; i++) {
//선택된 모든 요소의 텍스트 색상을 변경함
setFirstItem.item(i).style.color = "red";
//객체배열, 배열값 처럼 설정 가능
}
}
</script>
</head>
<body>
<h1>dom03</h1>
<h4>name 속성을 이용한 선택</h4>
<p name="first">첫 번째 단락이예요!</p>
<ul>
<li name="first">첫 번째 아이템이예요!</li>
<li>두 번째 아이템이예요!</li>
<li name="first">세 번째 아이템이예요!</li>
<li>네 번째 아이템이예요!</li>
<li>다섯 번째 아이템이예요!</li>
</ul>
<button onclick="chgColor()">first색상 Red 변경</button>
</body>
</html>
17) dom04
- addEventListener: 선택한 요소에 이벤트 리스너를 등록
18) function01 + function02
- addNum
19) function03
<04폴더>
20) bubblingEvent
- bubbling: 한 요소에 이벤트가 발생하면, 이 요소에 할당된 핸들러가 동작하고, 이어서 부모 요소의 핸들러가 동작함, 가장 최상단의 조상 요소를 만날 때까지 이 과정이 반복되면서 요소 각각에 할당된 핸들러가 동작
- Listener: listener의 앞의 값을 미리 등록하는 것
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
#divBox {
width: 100%;
height: 100px;
border: 2px solid red;
}
#paraBox {
width: 80%;
height: 50px;
border: 2px solid orange;
}
#spanBox {
border: 2px solid green;
}
</style>
</head>
<body>
<h1>버블링(bubbling) 이벤트 전파</h1>
<h5>한 요소에 이벤트가 발생하면, 이 요소에 할당된 핸들러가 동작하고,
이어서 부모 요소의 핸들러가 동작함</h5>
<div id="divBox">
<p id="paraBox">박스 안의 여러 곳을 <span id="spanBox">클릭</span>해 보세요!</p>
</div>
<p id="text"></p>
<script type="text/javascript">
function clickDiv(event) {
document.getElementById("text").innerHTML += "div 요소를 click 하셨네요!<br>";
}
function clickPara(event) {
document.getElementById("text").innerHTML += "p 요소를 click 하셨네요!<br>";
}
function clickSpan(event) {
document.getElementById("text").innerHTML += "span 요소를 click 하셨네요!<br>";
}
// 각 요소마다 버블링 방식으로 click 이벤트 리스너를 등록함.
document.getElementById("divBox").addEventListener("click" , clickDiv);
// divBox 영역 안에서 click이벤트가 시작되면 clickDiv를 발생시켜라
document.getElementById("paraBox").addEventListener("click" , clickPara);
document.getElementById("spanBox").addEventListener("click" , clickSpan);
</script>
</body>
</html>
21) capturingEvent (↔ bubblingEvent)
- bubbling으로 할지 capturing으로 할지는 true값이냐 옵션이냐로 정한다
22) domBgColor: 마우스 커서를 색깔판에 올리면 그에 맞는 색으로 배경색이 변함
- 전역변수:
- ㅇㅇ
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
// index 0 1 2 3 4 5 6
var color = ["red", "orange", "yellow", "green", "blue", "navy", "violet"];
//전역변수
function chk(num) {
document.body.style.backgroundColor = color[num];
}
</script>
</head>
<body bgcolor="black">
<h1>dom 색상 바꾸기</h1>
<table border="1" width="200" height="80">
<tr>
<td bgcolor="red" onmouseover="chk(0)"></td>
<td bgcolor="orange" onmouseover="chk(1)"></td>
<td bgcolor="yellow" onmouseover="chk(2)"></td>
<td bgcolor="green" onmouseover="chk(3)"></td>
<td bgcolor="blue" onmouseover="chk(4)"></td>
<td bgcolor="navy" onmouseover="chk(5)"></td>
<td bgcolor="violet" onmouseover="chk(6)"></td>
</tr>
</table>
</body>
</html>
23) domFgColor: 마우스 커서를 색깔판에 올리면 폰트와 배경색이 변함
24) domingChg2(HTML 4.0 설정)
25) domimgMenu
26) domInterval01
27) ⭐⭐⭐⭐⭐domJson >>spring까지 나오는 개념
오늘의 숙제
- 04>>domFgColor: domBgColor 응용해서 자기 위치의 전 위치의 값의 색이 나오게 하기
내가 한 것↓↓↓
<script type="text/javascript">
//index 0 1 2 3 4 5 6
var color = ["red", "orange", "yellow", "green", "blue", "navy", "violet"];
function chk(num) {
document.body.style.backgroundColor = color[num];
}
function chk(num) {
document.body.style.color = color[num];
}
정답
<script type="text/javascript">
//index 0 1 2 3 4 5 6
var color = ["red", "orange", "yellow", "green", "blue", "navy", "violet"];
function chk(num) {
document.fgColor = color[num];
if(num==0) document.bgColor = color[6];
else document.bgColor = color[num-1];
}
</script>
'JSP > Java Script' 카테고리의 다른 글
2024_07_10_수 (0) | 2024.07.10 |
---|---|
2024_07_09_화 (0) | 2024.07.09 |
2024_07_08_월 (0) | 2024.07.08 |
2024_06_21_금 (0) | 2024.06.21 |
2024_06_19_수 (0) | 2024.06.19 |