[자바스크립트 용어 정리]
1. 자바스크립트 코드의 문서내 삽입
1.1.1
< script type="text/javascript">
code here~~
</script>
1.1.2
< script type="text/javascript" src="외부 자바스크립트문서.js"></script>
1.1.3
이벤트 핸들러의 내용
2. 어휘구조
2.1 unicode 문자집합(문자하나당 16bit) - ASCII,Latin-1 (유니코드 문자 집합의 하위 집합)
2.2 대소문자 - 구분한다. 각종 키워드,변수,함수이름,그밖의 모든 식별자는 다 대소문자를 구분한다.
2.3 공백과 줄나눔 - 프로그램내 토큰 사이에 존재하는 모든 스페이스, 탭,줄바꿈등을 무시한다.
2.4 선택적인 세미콜론(;) - 일반적으로 대부분 프로그램언어에서 하나의 정의 문장이 끝나면 세미콜론으로 마무리한다.
하지만 자바스크립트는 선택적이다.
2.5 주석 (설명을 달거나 디버깅 용도로 사용)
- // - 한줄 주석
- /* ~~~~ */ - 여러줄 주석
*******
html <!-- ...... -->
css /* ......... */
2.6 리터럴 - 리터럴은 프로그램에 직접 나타나는 데이터 값이다.
- 12 //숫자 12
- "hello world~" //문자열
- true,false // 논리값
- null // 널값(객체가 존재하지 않음)
2.7 식별자 - 식별자로 사용할 수 있는 문자의 종류 => 프로그램내에서 특별한 구조적 의미를 가지는 단어
- 영어 알파벳 소문자
- 영어 알파벳 대문자
- 아라비아 숫자
- _(언더바)
- $(달러) --- 잘 사용되지 않는다.
-- 숫자만으로 이루어진 식별자는 사용할 수 없다.
-- 숫자로 시작하는 식별자는 사용할 수 없다.
2.8 예약어 -- 자바스크립트에서 이미 예약되어 사용하고 있는 식별자(키워드)
3. 데이터 타입과 값
3.1 기본 데이터
- 숫자 ( 정수와 실수) - 일반적으로 연산
- 문자열 (쌍 따옴표나 홑 따옴표로 감싸져있는 문자의 집합) - 일반적으로 출력
- 논리값 (참과 거짓을 나타내는 값) - true / false
- undefined -- 할당되지 않은 변수의 데이터 타입, 정의된적이 없는 객체의 프로퍼티
- null
3.2 복합데이터
- 객체 --> 자바스크립트는 느슨한 객체 지향적 언어이다.
- 기본객체 - 이름 붙은 값들의 모음
- 함수 - 실행 가능한 자바스크립트 코드의 묶음
- 배열 - 순서가 있는 값들의 모음(객체의 특수한 형태)
**** 자바스크립트에서 중요한 몇개의 이스케이프 문자들
\t => 탭문자
\n => 개행문자
\r => 라인피드
\" => 문자로서의 따옴표
\' => 문자로서의 홑 따옴표
4. 변수 - 어떠한 값과 연관된 이름(식별자)
4.1 변수의 타입 ==> 변수에 할당된 데이터 타입과 동일하다.
4.2 변수 선언 ==> 식별자 명명 규칙에 따라서 var 키워드를 사용하여 선언.
4.3 변수의 유효범위 ==> 일반적으로 변수는 선언된 문서 어디서든지 사용 가능하지만 지역변수는 그렇지 않다.
자바스크립트는 블록 단위 유효 범위는 없다.
- 전역변수 - 스크립트 태그 내에 직접 선언된 변수
- 지역변수 - 함수안에서 선언된 변수
*** 논리값으로 평가 되었을때 false 평가되는 값들 0 , null , undefined , "" , '' , NaN
위 열거된 이외의 값들은 true로 평가된다.
4.4 기본 타입과 참조 타입
5. 표현식과 연산자
5.1 표현식
-> 자바스크립트 인터프리터가 계산하여 값을 구할 수 있는 자바스크립트 구절
5.2 연산자
-> 특정 데이타 또는 특정 데이타를 담고 있는 변수들을 계산하는 특정 기호 또는 키워드
5.3 산술연산자
+ : 덧셈
- :뺄셈
* :곱셈
/ :나눗셈
% : 나머지
+ : 단항플러스
- : 단항 마이너스
++ : 증가 연산자
-- : 감소 연산자
5.4 동등 연산자 -> 결과값은 항상 논리값
== (동등) <-> !=
=== (일치) <-> !==
5.5 관계연산자
5.5.1 비교 연산자 -> 결과값은 항상 논리값
> : 크다
< : 작다
>= : 크거나 같다
<= : 작거나 같다.
5.5.2 in 연산자 -> 어떤 객체가 어떠한 프로퍼티를 가지고있는가?
5.5.3 instanceof 연산자
5.6 문자열 연산자
+ : 문자열 이어 붙이기
** 숫자의 자동 형변환 주의**
5.7 논리 연산자
5.7.1 and (&& ) : 논리곱
5.7.2 or (||) : 논리합
5.7.3 not (!) : 논리 부정
5.8 비트 연산자(X)
5.9 할당 연산자
=
5.9.1 복합 할당 연산자
+=
-=
*=
/=
%=
5.10 기타 연산자들
5.10.1 조건부 연산자(삼항 연산자)
(논리값이거나 논리값으로 평가될 수 있는 표현식) ? 표현식1:표현식2
-> 논리 부분이 참이면 표현식1이 실행되어 반환
-> 논리 부분이 거짓이면 표현식2가 실행되어 반환
5.10.2 typeof 연산자 (단항 연산자)
5.10.3 객체 생성 연산자(new)
5.10.4 delete 연산자
5.10.5 배열(객체) 접근 또는 배열의 정의 => []
5.10.6 . 객체 접근 연산자
6.문장
6.1 표현문
6.2 복합문
6.3 조건문(if) - 조건에 따라서 자바스크립트 특정문장을 실행
6.3.1 형식
-
if(조건-논리값이나 논리값으로 평가될수 있는 표현식,문장) {
위 조건이 참일 경우의 실행 영역....
}
-
if(조건-논리값이나 논리값으로 평가될수 있는 표현식,문장) {
위 조건이 참일 경우의 실행 영역....
} else {
위 조건이 거짓일 경우의 실행 영역....
}
-
if(조건1-논리값이나 논리값으로 평가될수 있는 표현식,문장) {
위 조건이 참일 경우의 실행 영역....
} else if(조건2-논리값이나 논리값으로 평가될수 있는 표현식,문장) {
위 조건이 참일 경우의 실행 영역....
} else if(조건3-논리값이나 논리값으로 평가될수 있는 표현식,문장) {
위 조건이 참일 경우의 실행 영역....
} else if(조건4-논리값이나 논리값으로 평가될수 있는 표현식,문장) {
위 조건이 참일 경우의 실행 영역....
} ......
-
if(조건1-논리값이나 논리값으로 평가될수 있는 표현식,문장) {
위 조건이 참일 경우의 실행 영역....
} else if(조건2-논리값이나 논리값으로 평가될수 있는 표현식,문장) {
위 조건이 참일 경우의 실행 영역....
} else if(조건3-논리값이나 논리값으로 평가될수 있는 표현식,문장) {
위 조건이 참일 경우의 실행 영역....
} else if(조건4-논리값이나 논리값으로 평가될수 있는 표현식,문장) {
위 조건이 참일 경우의 실행 영역....
} ......
} else {
위의 조건들이 모두 거짓일 경우의 실행 영역...
}
6.4 switch case break 문 -- 일치 조건문(===)
----------
6.4.1 형식
switch(변수(표현식)) {
case(값1):
변수와 값1이 일치할 경우 실행 영역....
break;
case(값2):
변수와 값2가 일치할 경우 실행 영역....
break;
case(값3):
변수와 값3이 일치할 경우 실행 영역....
break;
.....................
default:
위 케이스중 하나도 일치하는경우가 없는 경우 실행 영역.....
break;
}
6.5 while 문
6.5.1 형식
while(조건-논리값이나 논리값으로 평가될수 있는 표현식,문장) {
위 조건이 참일경우 반복 영역.....
}
6.6 do while 문
6.6.1 형식
do {
조건이 참일경우 반복 영역.....
} while(조건-논리값이나 논리값으로 평가될수 있는 표현식,문장)
6.7 for 문
6.7.1 형식
for(초기값;조건식;증감식) {
위 조건이 참일 경우의 반복 영역.....
}
6.8 for in 문 (객체 또는 배열 순회용)
6.8.1 형식
for( 변수 in 객체) {
반복 영역.....
}
6.9 break /---- continue / label
6.10 function - 함수 ( 실행가능한 자바스크립트 코드의 모음(묶음))
=> 자바스크립트는 함수도 데이터(객체)이다. 그러나 타입검사(typeof)를 시행하면
function
6.10.1 형식
-
var 함수명=function([매개변수,....]) {
}
-
function 함수명([매개변수,....]) {
}
- 매개변수는 해당 함수의 지역변수
6.10.2 유효범위
함수는 자기만의 동적 유효범위를 가진다.
6.10.3 return
-함수 밖으로 값을 내보낼때
-이 문장을 만나게 되면 함수는 무조건 종료
7.객체와 배열
7.1 객체 : 이름이 붙은 값들의 집합
7.1 객체 생성하기
7.1.1 리터럴 사용
7.1.2 클래스(모조 클래스,객체 생성자 함수) 사용
7.1.3 프로퍼티 열거하기
7.2 배열 : 특별한 형태의 객체로서 숫자가 붙은 값들의 순서(0 부터) 있는 집합
- Array 클래스를 사용하여 배열 생성
- 배열 리터럴을 사용하여 배열 생성(내부적으로 Array 클래스 사용)
7.2.1 배열의 크기(방의 갯수)
- length : 읽기 , 쓰기
7.2.2 다차원 배열
배열의 원소로 배열을 가지고 있는것
7.2.3 배열 메써드
- join(특정 구분자) : 배열의 원소를 꺼내서 특정구분자로 연결하여 문자열 반환
- reverse() : 배열안의 원소의 순서를 꺼꾸로 - 원본배열 변경
- sort() : 배열안의 원소를 오름차순 정렬 - 원본배열 변경
- concat() : 배열을 연결하여 반환
- slice(n,m) : 배열의 n번 인텍스 원소부터 m번 인덱스번호 전까지 잘라서 반환
- splice(i,n [추가 원소,....]) : 배열의 i번 인덱스부터 n개의 원소를 잘라내고 그 자리에
추가 원소를 추가 -- 원본배열 변경,잘라낸값 반환
- push() / pop() : 배열의 끝에 새로운 원소 삽입 / 배열의 마지막 원소를 잘라내기
- unshift() / shift() : 배열의 앞에 새로운 원소 삽입 / 배열의 처음 원소를 잘라내기
- toString() : 객체의 문자열 표현
7.2.4 배열과 유사한 객체 - 객체를 배열 처럼 선언하고 사용 하는것
8.함수 : 함수란 한번 정의해서 임의의 횟수에 걸쳐서 호출하여 실행될 수 있는 자바스크립트의 코드의 블록(모음)이다.
8.1 함수 정의와 호출
- 함수명(식별자)
- 매개변수 목록
- 함수 몸체를 구성하는 자바스크립트 코드
- 호출은 함수명(매개변수에 할당될 값.....)
8.2 전달인자(매개변수)
- arguments : 전달인자 목록을 가지고 있는
배열과 유사한 객체-함수 호출 시 자동 생성
-- callee
8.3 메써드로서의 함수
9.클래스 / 생성자 / 프로토타입
9.1 생성자 / 프로토타입
9.1.1 new 키워드
9.1.2 생성자 함수
9.1.3 this : 클래스를 통하여 생성될 객체를 지칭하는 키워드이다.
9.1.4 prototype : 클래스의 모든 인스턴스가 공유하는 객체생성자 함수안의 특별한
영역(프로퍼티)
9.1.5 생성자 함수 자체도 객체이기 때문에 자기 자신의 프로퍼티와 메써드를 가질 수
있다. 이들을 정적 속성,정적 메써드라 부른다.
9.1.6 생성자 함수에는 return 문이 없다.
9.2 내장형 타입의 확장
9.2.1 내장 클래스
- 기본형 변수의 래퍼 클래스: String,Number,Boolean
- 일반 내장 클래스 : Date,Object,Array,...
9.3 객체 타입 판단하기
9.3.1 typeof
- typeof "aaa" => string
- typeof 100 => number
- typeof true => boolean
- typeof undefined => undefined
- typeof function() {..} => function
- typeof ["aa","bb"] => object
- typeof null => object
9.3.2 instanceof : Boolean
9.3.3 모든 객체의 공통 프로퍼티인 constructor
10. 모듈과 네임 스페이스
11. 내장 클래스,내장 객체, 내장 함수
11.1 arguments[] - 함수의 전달인자를 담고 있는 배열과 유사한 객체
- callee
- length
11.2 Array - 배열객체 생성자 함수
- length
- concat()
- join()
- pop()
- push()
- unshift()
- shift()
- reverse()
- slice()
- splice()
- sort()
11.3 Date - 날짜 객체 생성자 함수
11.3.1 전달인자
- 밀리초
ex) 5000 밀리초 -> 5초
- datestring -> 날짜형식의 문자열
- year,month(0~11),day,hours,minutes,seconds,ms
##time stamp / unix time
표준 시간으로 1970년 1월 1일 0시 0분 0초를 기준으로 해당 시점까지 흐른 시간
11.3.2 메써드
- getDate() : 일(day) 반환
- getDay() : 요일 반환 (0:일~6:토)
- getFullYear() : 네자리 연도 반환 | getYear()
- getHours() : 시 반환
- getMilliseconds() : 밀리초 반환
- getMilutes() : 분 반환
- getSeconds() : 초 반환
- getMonth() : 월 반환 ( 0:1월 ~ 11:12월 )
- getTime() : 타임스템프 값 반환(밀리초)
- setDate()
- setFullYear()
- setHours()
- setMilliseconds()
- setMilutes()
- setSeconds()
- setMonth()
- setTime()
- toDateString()
- toGMTString()
- toLocaleDateString()
- toLocaleString()
- toString();
11.4 encodeURI() <--> decodeURI() // 내장함수
11.5 encodeURIComponent() <--> decodeURIComponent() // 내장함수 : 문자열 인코딩 / 디코딩( 치환 )
11.6 eval() // 내장함수
-> 자바스크립트 코드 형식의 문자열을 평가하여 반환
11.7 Function() // 함수 객체 생성자 함수
- arguments
- apply() : 전달인자들의 배열을 함수 안으로 전달하면서 지정된 객체의 메써드로서 함수를 호출
- call() : 전달인자를 함수 안으로 전달하면서 지정된 객체의 메써드로서 함수를 호출
11.8 isNaN() // 내장 함수 is not a number?
11.9 Math() //객체 생성자 함수(객체를 생성하는 용도로 사용하지 않는다.)
-> 정적 속성 / 메써드만 가진다.
- Math.abs() - 절대값
---------------------------
- Math.ceil() - 올림
- Math.floor() - 내림
- Math.max() - 인자중 최대값
- Math.min() - 인자중 최소값
- Math.PI - 원주율
- Math.pow(x,y) - x의 y제곱
- Math.random() - 0과 1사이의 난수 발생
- Math.round() - 반올림
- Math.sqrt() - 제곱근
11.10 Number() // 숫자 객체 생성자 함수 -> 래퍼 클래스
- toFixed(n) - 소수점 밑 자리수 n으로 변경
- toExponential(n) - 지수 표기법
11.11 Object() // 빈 객체 생성자 함수
11.12 parseFloat() / parseInt() : 내장함수 -> NaN
11.13 String() // 문자객체 생성자 함수
- length : 글자 갯수 반환
- charAt(n) : n은 인덱스번호이다. n번 인덱스에 있는 문자 반환
- charCodeAt(n) : n은 인덱스번호이다. n번 인덱스에 있는 문자코드 반환
- concat() : 문자열 병합
- indexOf(c) : c는 문자 또는 문자열이다. c 문자의 인덱스번호를 앞에서 부터 찾는다.
- lastIndexOf(c) :c는 문자 또는 문자열이다. c 문자의 인덱스번호를 뒤에서 부터 찾는다.
- match() : 정규표현식을 이용 문자열 검색
- replace() : 문자열 검색후 교체 - 정규표현식 사용 가능
- search() : 문자열 검색후 위치 반환- 못찾는 경우 -1 반환
** 부분 문자열 추출**
- slice(from,to) : from -> 정수, to -> 정수 : form 인덱스번호부터 to 인덱스번호 전까지
- substr(start [,length]) : start -> 정수, length -> 0 이상의 정수
- substring(from,to) : from-> 0 이상의 정수 , to-> 0 이상의 정수
: form 인덱스번호부터 to 인덱스번호 전까지
- split(delimiter[,limit]) : delimiter를 구분자로 limit 개수만큼 분리하여 배열로 반환
- toLowerCase()
- toUpperCase()
** 정적메써드
String.fromCharCode()
제2부 클리이언트 측 자바스크립트 - 브라우저 컨트롤
13.웹 브라우저와 자바스크립트
13.1 window 객체 // 내장 객체
: 브라우저를 지칭한다. 자바스크립트의 전역실행 컨텍스트로서 자바스크립트는 window 객체를 실행 환경으로 한다.
13.2 BOM - Brower Object Model
: 브라우저 컨트롤과 기본적인 문서 컨트롤
13.3 HTML 의 기본적인 이벤트 처리기(이벤트 핸들러) -> 메써드(몸체가 구현되지않은)
-> html 태그의 자바스크립트 관련 어트리뷰트
- onclick
- onmousedown / onmouseup
- onmouseover / onmouseout
- onchange -> select , input type="text"
- onload - body (window)
14. 브라우저 창 스크립팅(BOM)
14.1 타이머 - 일반적으로 애니메이션에 사용이 된다. (브라우저에서의 모든 애니메이션은 타이머를 이용한다.)
- window.setTimeout(code,delay) <-> window.clearTimeout(timerObj)
code : 문자열 형식의 자바스크립트 코드
delay : 지체시간(밀리초 단위)
- window.setInterval(code,interval) <-> window.clearInterval(timerObj)
code : 문자열 형식의 자바스크립트 코드
interval : 간격(밀리초 단위)
14.2 Location / History
14.2.1 Location
- href : 전체 주소 ( read / write )
- host : 도메인 또는 아이피
- hostname : 호스트명
- protocol : 통신 규약 ( http or ftp .... )
- hash : 책갈피명
- search : query string ( get 방식의 서버전달 문자열)
- port : 포트번호
- pathname : 도메민을 제외한 문서 까지의 경로
- reload() : 현재 페이지 다시 로딩 - 새로고침
----
- replace() : 현재 주소 교체
##다른페이지로 이동
- window.location.href='이동할 주소'
- window.location.replace('이동할 주소')
: 기록을 남기지 않는다.
14.2.2 History
- forward()
- back()
- go(n) : n -> -1 뒤로 n-> -2 뒤로 두번 n-> 2
14.3 창 화면 브라우저에 대한 정보 얻기( window,screen,navigator)
14.3.1 창 위치
-- 표준 브라우저 --
window.screenX
window.screenY
-- IE -- (뷰포트의 좌표)
window.screenLeft
window.screenTop
14.3.2 뷰포트의 크기
--- 표준 브라우저 ---
window.innerWidth
window.innerHeight
--- IE(DOCTYPE 존재)
document.documentElement.clientWidth
document.documentElement.clientHeight
14.4 Screen 객체
- width
- height
-availWidth
-availHeight
14.5 Navigator - 브라우저 정보를 가지고 있는 객체
--------------------------------------
14.6 창열고 조작하기(popup 창)
14.6.1 window.open(url,name,features)
반환값은 전달인자의 name값에 따라서 새로 생성된 창에대한 참조거나
기존 창의 참조이다.
- url : 열린 창에 띄워질 문서의 주소
- name : 창의 이름으로 알파벳,숫자,언더바를 포함한 문자열이며 생략 가능하다.
이렇게 만들어진 이름은 a 태그나 form 태그의 target 속성의 값으로 쓰일 수 있다.
- features
height : 숫자값
width : 숫자값
left : 숫자값
top : 숫자값
menubar : yes / no
location : yes / no ---- X
resizable : yes / no ---- X
scrollbars : yes / no
status : yes / no ---- X
14.6.2 window.close() - 모창 또는 팝업창에따라서 동작을 다르게 한다.
*** 팝업창을 닫으면 팝업창의 window object 가 사라지는 것이 아니고
팝업창의 window객체의 closed 속성에 true 가 할당이 된다.
14.6.3 window 객체의 고수준 이벤트 메써드 focus() / blur()
***모창에서의 팝업창 제어는 window.open() 메서드의 반환값을 사용하면된다.
팝업창에서의 모창제어는 팝업창 window객체의 opener 프로퍼티를 사용하면 된다.
팝업창의 opener 프로퍼티는 모창의 참조를 가지고 있다.
14.7 간단한 대화상자
14.7.1 window.alert(message) -> 반환값이 없다
14.7.2 window.confirm(message) -> 반환값은 논리값이다.
14.7.3 window.prompt(title,default value) -> null / 입력문자열
14.8 다중창과 프레임
14.8.1 window.frames 배열과 유사한 객체
15.문서 스크립팅
15.1 레거시 DOM / Level 0 DOM (BOM)
- 각 오브젝트를 name 값으로 접근 가능( frame,form,img,폼의 하위 엘리먼트들)
15.1.1 window.document
- open()
- write()
- clear()
- close()
- bgColor
- cookie -----
- domain
- lastModified
- referrer
- title
- URL
15.1.2 레거시 window.document의 하위 객체 집합
- anchors[]
- forms[] - elements[]
- images[]
- links[]
** a 태그(책갈피,링크)는 name 값으로 접근 못한다.
** html 엘리먼트의 어트리뷰트에 해당하는 자바스크립트 해당 엘리면트의 객체의 프로퍼티가
존재한다. 읽고 쓸수 있다.
15.2 DOM(w3c DOM , DOM Level 1 ,DOM Level2)
15.2.1 노드 : 모든 html 문서는 노드들로 이루어져 있다.
** nodeType -> 노드타입에 관련된 숫자 값
1 : 엘리먼트 노드
2 : 속성 노드
3 : 텍스트 노드
9 : 도큐먼트 노드
11 : 도큐먼트 프래그먼트 노드
15.2.2 document.documentElement : 문서의 최상위 엘리먼트 객체 참조
html 문서인 경우에는 html 요소를 참조한다.
15.2.3 document.body : 문서의 body 엘리먼트 객체 참조
15.2.4 어트리뷰트
getAttribute(),setAttribute(),removeAttribute()
-> html 엘리먼트(DOM 객체)의 메써드
15.2.5 문서내 엘리먼트 찾기 ->
- getElementsByTagName('태그명') -> html collection(배열과 유사한 객체) 반환
document 나 엘리먼트객체의 메써드
------------------------
- getElementById('아이디값') -> 엘리먼트 객체 반환
document 의 메써드
15.2.6 자식노드 배열(컬렉션)
- childNodes : 도큐먼트노드나 엘리먼트 노드의 자식 노드의 컬렉션
IE와 표준 브라우저간의 개행문자로 인한 차이가 있을 수 있다.
15.2.7 각종 노드의 프로퍼티--주로 엘리먼트노드(도큐먼트)
- nodeName : 객체명,엘리먼트 노드인 경우 노드명(태그명)을 대문자로 반환 -> tagName
텍스트 노드인 경우에는 #text
- nodeValue : 객체의 값(주로 텍스트 노드)
-- 엘리먼트 노드인 경우 null 값을 가진다.
-- 텍스트 노드인 경우 해당 텍스트 값을 가진다.
- nodeType : 숫자로 표현되는 노드의 종류
- parentNode : 현 노드의 부모 노드
- childNodes : 자식 노드의 노드 리스트(배열과 유사한 객체,컬렉션)
- firstChild : 첫번째 자식 노드
- lastChild : 마지막 자식노드
- previousSibling : 이전 노드 - 형
- nextSilbing : 다음 노드 - 동생
- data : 텍스트 노드의 값
-- 텍스트 노드의 값만을 참조 가능
15.2.7 각종 노드의 메써드
- getElementById(id) -> document
- getElementsByTagName(tagNme) -> document / element
- getAttribute(name) -> element
- setAttribute(name,value) -> element
- removeAttribute(name) -> element
- getAttributeNode(name)
- setAttributeNode(attr)
- removeAttributeNode(attr)
- hasAttribute(name) -> 반환값은 논리값
15.2.8 자식 트리변경 - 엘리먼트
- insertBefore(newChild,refChild) : 기존 자식 앞에 새로운 자식노드 추가
- replaceChild(newChild,oldChild) : 기존 자식을 새 자식으로 교체
- removeChild(oldChild) : 기존 자식 제거
- appendChild(newChild) : 새로운 자식 추가(막내)
15.2.9 새로운 노드 생성
- document.createElement(tagName) -> element 노드(객체) 생성 반환
- document.createTextNode(data) -> 텍스트 노드(객체) 생성 반환
- document.createAttribute(name) -> 엘리먼트의 속성노드(객체) 반환
- cloneNode(deep) : deep은 불리언 값을 가지며 자식노드까지 복제할것인지를
결정한다.
15.2.10 insertAfter 응용함수
function insertAfter(newElement,targetElement) {
var parent=targetElement.parentNode;
if(parent.lastChild==targetElement) {
parent.appendChild(newElement);
} else {
var nextEle=targetElement.nextSibling;
parent.insertBefore(newElement,nextEle);
}
}
15.2.11 documentFragment
- document.createDocumentFragment()
15.2.12 innerHTML (일기 쓰기 ) / innerText(IE 전용)
16. CSS 와 DHTML
16.1 엘리먼트의 style 프로퍼티 - 인라인 스타일
16.2 className / setAttribute(클래스명)
- IE6,IE7 ele.className / setAttribute("className","someValue")
- IE8 ele.className / setAttribute("class","someValue")
- 표준 ele.className / setAttribute("class","someValue");
=> 크로스 브라우징은 ele.hasAttribute를 이용하여 (IE6,IE7 undefined)
16.3 엘리먼트의 위치와 크기
16.3.1 offsetLeft / offsetTop
16.3.2 offsetWidth / offsetHeight
16.3.3 offsetParent
16.4 불투명도 조정
css-> opacity:0~1 (표준); filter:alpha(opacity=0 ~ 100) (IE)
17. 이벤트와 이벤트 처리
17.1 기본 이벤트 모델 - html 이벤트 어트리뷰트나 자바스크립트 이벤트 함수
ex) < ..... onclick="code...." /> / element.onclick=funciton() {....}
abort -- 이미지 로드가 중단 되었을때 -- img
blur -- 객체가 포커스를 잃었을때 -- window, 폼의 엘리먼트
focus -- 객체가 포커스를 얻었을대 -- window, 폼의 엘리먼트
change -- 값이 변한경우 -- input (text,password), select
click -- 마우스로 클릭한경우 -- 대부분의 엘리먼트
dblclick -- 마우스로 더불클릭한경우 -- 대부분의 엘리먼트
error -- 문서자체나 이미지 로딩중 오류가 발생한 경우 -- 웹문서,img
----------------------------------
keydown -- 키보드의 키를 누른경우 (document,form element)
keypress -- 키보드의 키를 눌렀다가 뗀경우 (document,form element)
keyup -- 키보드의 키를 누른상태에서 뗀경우 (document,form element)
load -- 브라우저에 문서의 로딩이 끝난경우 -- window (body)
unload -- 브라우저에 로딩되어 있는 페이지에서 빠져 나갈때 -- window(body)
mousedown -- 마우스 버튼을 누른경우 -- 대부분의 엘리먼트
mouseup -- 마우스 버튼을 뗀경우 -- 대부분의 엘리먼트
mouseover -- 마우스를 엘리먼트 위로 움직인경우 -- 대부분의 엘리먼트
mouseout -- 마우스를 엘리먼트 밖으로 움직인경우 -- 대부분의 엘리먼트
mousemove -- 마우스를 엘리먼트 위에서 움직이는경우- 대부분의 엘리먼트
reset -- 폼의 초기화 요구가 발생한경우 -- 폼
submit -- 폼의 전송 요구가 발생한 경우 -- 폼
resize -- 창의 크기기 변경 되었을 경우 -- window,frame
select -- 텍스트를 선택하였을때 - input (text,password), textarea
scroll -- 스크롤할때 -- 스크롤바가 생길수 있는 엘리먼트
====>
위 이벤트에 관련된 html 엘리먼트의 어트리뷰트 -> onclick,onabort,......
위 이벤트에 관련된 html 엘리먼트 객체의 메써드 -> onclick,onabort,......
**** 기본 이벤트의 처리 단계(전파) ****
기본 적으로 버블 단계에서 이벤트 처리를 한다.
**** 이벤트 객체 *****
- 발생한 이벤트에 관련된 정보를 가지고 있는 객체
- 표준 브라우저에서는 이벤트 처리함수의 인자로 전달
- IE 에서는 window.event 객체에 담겨지게 된다.
**** 표준 이벤트 모델의 이벤트 처리단계
-- 캡춰 단계
-- 대상 단계
-- 버블 단계
17.2 표준 이벤트 모델 - 이벤트 등록 메써드 사용 -> addEventListener()
17.2.1 addEventListener(이벤트명,처리함수,이벤트 처리 단계)
- 이벤트명 : click,submit,.... 이런 이벤트명을 문자열로 전달
- 처리함수 : 해당 이벤트가 발생했을때 실행할 자바스크립트 함수
해당 엘리먼트의 메써드로 등록된다.
- 이벤트 처리단계 : true : 포착단계처리 false: 거품단계처리
대상단계는 무조건 처리
**** 표준 이벤트 객체 프로퍼티 / 메써드
- type : 이벤트 명
- target : 이벤트가 발생한 노드 (currentTarget과 같지 않을 수 있다.)
- currentTarget:이벤트가 현재 처리되고있는 노드
- eventPhase : 전파단계정보 1-> 포착(capture), 2 -> 대상(target) 3 -> 거품(bubble)
- bubbles : 버블링되는 이벤트인지 나타내는 논리값
- cancelable : 이벤트의 기본행동 취소 가능 여부 논리값
: link - click, form - submit, form - reset
- clientX / clientY : 문서내 좌표
- screenX / screenY : 모니터상의 좌표
- relatedTarget : mouseover / mouseout 이벤트에 관련된 프로퍼티 로서
관계엘리먼트를 나타낸다.
- stopPropagation() - 전파 중지
- preventDefault() - 기본행동 중지
17.3 IE 전용 이벤트 모델 - 이벤트 등록 메써드 사용 -> attachEvent()
17.3.1 attachEvent(이벤트명,이벤트처리함수)
- 이벤트명 -> on+실제이벤트명
ex) click -> onclick
- 이벤트객체는 이벤트처리함수의 인자로 전달 되는것이 아니고
window.event 프로퍼티에 할당된다.
****IE Event 객체 ****
- type : 이벤트명 ( 표준과 동일)
- srcElement : 이벤트가 발생한 문서 엘리먼트(표준에서의 target)
- clientX,clientY : 이벤트가 발생한 지점의 문서상의 좌표(표준과 동일)
- offsetX,offsetY : 이벤트가 발생한 지점의 엘리먼트 상의 좌표 (표준에는 없다)
- fromElement(mouseover),toElement(mouseout) : 마우스오버나 마우스아웃 이벤트에
관련된 엘리먼트를 나타낸다. (표준에서의 relatedTarget과 호관)
- cancelBubble - true값을 할당하게 되면 이벤트 버블링이 중지된다.
(표준에서의 stopPropagation() 메써드와 호환)
- returnValue- false값을 할당하게되면 해당 엘리먼트의 기본행동이 중지 된다.
(표준에서의 preventDefault())
17.4 이벤트 처리기 제거
- removeEventListener() -> 표준
- detachEvent() -> IE
17.5 기본이벤트 모델에서의 이벤트 객체
17.6
- 이벤트 처리기 등록 -> addEvent()
- 실제 이벤트가 발행한 엘리먼트 -> getTarget()
- 이벤트가 처리되고 있는 노드 -> 이벤트 처리함수의 두번째 인자로 전달된다.
- 관계 엘리먼트 -> getRelatedTarget()
- 버블링 중지 ->stopBubbling()
- 기본 행동취소 -> stopDefaultAction()
18. 폼과 폼 엘리먼트
18.1 폼의 유효성 검사
18.1.1 필수 입력사항 검사 -> text ,password,textarea
- value 프로퍼티 값 존재 여부
18.1.2 필수 선택사항 검사 -> radio,checkbox,select-option
- radio / checkbox
- nodeList -> 배열과 유사한 객체
- length -> 숫자
- checked -> 논리값
- select ---------------------------
- selectedIndex - 선택되어 있는 옵션 번호 - read and write
18.1.3 입력값의 유효성 검사 -> text ,password,textarea
18.1.4 파일 컨트롤 유효성검사 - value -> 파일 자체 유효성 검사는 할 수 없다.
18.2 기타 폼 엘리먼트의 조작
18.2.1 radio / checkbox
- length - 읽기만 가능
- checked : boolean
- disabled : boolean
18.2.2 text / password / textarea
- readOnly : boolen
- disabled : boolean
18.2.3 select
- selectedIndex - read , write
- options : 옵션리스트(Collection)
- length - 읽기 ,쓰기
18.2.4 option
- value
- text
- selected : boolean
19. 쿠키 - 클라이언트측 지속성
19.1 window.document.cookie
19.2 쿠키값 설정
- document.cookie="쿠키변수=쿠키값; expires=만료일; path=경로; domain=도메인; secure=논리값"
- 쿠키값은 기본형 데이터만 사용하여야 한다.(문자,숫자)
- 만료일은 GMT 형식의 날짜 문자열 사용
- 경로는 쿠키값 유효 경로
- 도메인은 부속도메인과 본 도메인이 쿠키값을 공유하고한다면 본도메인 값으로 설정
- secure 값을 true로 설정하면 https 프로토콜을 사용한다는 의미이다.
20. HTTP 스크립팅( AJAX - Asynchronous Javascript And XML)
20.1 요청객체 얻어내기
20.1.1 표준 브라우저
- XMLHttpRequest()
20.1.2 .IE
- ActiveXObject("Msxml2.XMLHTTP") -> IE6 부터
- ActiveXObject("Microsoft.XMLHTTP") -> IE6 이전
20.2 요청객체 열어서 준비 시키기
20.2.1 요청객체의 open(method,url,동기 비동기여부)
- method -> get , post
- url -> 요청문서
- 동기 비동기 여부 : true:비동기,false:동기
20.2.2 메써드별 전송 데이타의 위치
get : 데이타는 url에 queryString으로 붙는다
post : send 메써드의 인자로 전달이 된다.
20.3 서버에 요청하기
20.2.2 요청객체의 send(null or data) 메써드 호출
20.4 요청객체의 상태(readyState)프로퍼티 값
0 : 요청객체를 만들기만 했을때
1 : open() 메써드만 호출 된 상태
2 : send() 메써드만 호출 되었지만 서버로 부터 응답을 받기전
3 : 서버로 부터 데이터를 받고 있는중
4 : 서버로 부터의 응답이 완료된 상태
=> 요청객체의 readyState 값이 변경이 될때 readystatechange 이벤트 발생
=> onreadystatechange
20.5 요청객체의 status 프로퍼티 값 ( 서버로부터의 응답완료시의 상태)
200 : 정상적인 응답
401 : 권한이 없음
404 : 페이지를 찾을 수 없음
....
20.6 성공적으로 요청이 완료되었을 경우 응답 데이타의 사용
- 요청객체의 responseText 프로퍼티 사용 - text
- 요청객체의 responseXML 프로퍼티 사용 - xml 문서 오브젝트
20.7 응답 데이타의 응용 - text ( json )