이벤트



- 이벤트는 사용자가 무언가를 클릭했을 때 발생되는 것.


event 

 

function 

click  

 =>

onclick 


Event  발생

- 운영체제에 의해서 Message(이벤트 정보)를 웹 브라우저에 보낸다.

- 웹 브라우저를 거치기 전에 메시지 큐라는 곳을 거치고 웹 브라우저에 들어간다.



error

uncaught typeerror cannot set property 'onclick' of null


- d1이라는 태그가 DOM 트리에 생성이 되어야 하는데, 찾아 내질 못해서 에러가 발생한다.




<script>

window.onload = function () { 

    

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

    d1.onclick = function() {

    console.log("d1 눌렀다.");

    };

};

</script>

</head>

<body>


<h1 id='d1'>이 문자를 클릭하면 (console.log)가 찍힙니다.</h1>


</body>

</html>


결과화면





- onload() 함수는 DOM 트리가 형성되었을 때 실행된다.


- d1이라는 아이디를 찾아서 함수를 등록한다.

- 함수 호출은 사용자가 해당 엘리먼트를 클릭할 때 발생.




로지 자기 자신만 호출되려면 다음 코드를 작성한다.


등록된함수.onclick = function(event){

if ( event.target == this){

}


 

벤트 호출에는 2가지 타입으로, 캡쳐와 버블이 있다.


캡쳐-단계는 제일 초기에 실행되는 것이다. DOM 트리의 가장 바깥 요소에서부터 시작하여,

이벤트가 일어난 요소에 도착할 때까지 안쪽으로 찾아 들어가고, 다시 바깥으로 나온다.

예를 들어, 웹 페이지에서 무언가를 클릭하면 처음에는 HTML 요소에서 onclick() 이벤트 핸들러를 찾고,

다음에는 body 요소에서 찾고, 다음에는, 다음에는, 하는 식으로 이벤트가 일어난 요소에 도착할 때까지

반복한다.

캡쳐 단계에서 호출되려면 특별한 옵션을 가지고 함수를 등록해야한다.

버블-단계는 이벤트처리하는데 있어서 마지막에 검사하는 것이다.

캡쳐-단계와는 반대로 타겟으로부터 루트를 향한다.

이 요소에 뭔가 이벤트 해늗ㄹ러가 할당되어 있는지- 를 시작해서, 그 부모 요소로, 그 부모 요소로,

하는 식으로 HTML요소까지 거슬러 올라간다.


블 단계를 없애는 방법

- stopPropagation();

- stopImmediatePropagation();


stopPropagation()

- 해당 이벤트의 전파 자체는 정지하지만 현재의 Node의 리스너는 모두 처리하고 끝낸다.


stopImmediatePropagation()

- 전파도 정지하고 현재의 Node의 다른 리스너도 처리하지 않는다.



통 stopPropagation()을 표준으로 사용하고 있다.


사용법


if(event.stopPropagation) {

event.stopPropagation();

}

};



html에서 태그 다룰 때 사용법


이름 <input id="name" type='text' name='name'>


id는 자바스크립트 엘리멘트를 다룰 때 사용한다.


name은 파라메터 이름이다. 서버에 보낼 때 이런 이름으로 보낼 때 사용한다.






cross browser

- IE, Safari, Opera, Fire Fox, Chrome......등 여러 브라우저 이동.


        window.onload = function () {

            var header = document.getElementById('myHeader');

            if (header.attachEvent) {


/*   

attachEvent가 있느냐 없느냐를 따지고서 실행한다.

attachEvent는 익스플로어에 있는 메서드.

그리고, IE는 onclick / 그 외 브라우저는 click.

*/

                // 인터넷 익스플로러의 경우 실행합니다.

                var handler = function () {

                    window.event.srcElement.style.color = 'red';

                    window.event.srcElement.detachEvent('onclick', handler);

                };

                header.attachEvent('onclick', handler);

            } else {

                // 그 이외의 브라우저에서 실행합니다.

                var handler = function () {

                    this.style.color = 'red';

                    this.removeEventListener('click', handler);

                };

                header.addEventListener('click', handler);

                header.addEventListener('click', handler);

            }

        };




'JAVA SCRIPT' 카테고리의 다른 글

60초 뒤에 실행하기  (0) 2019.01.11
콤마  (0) 2019.01.11
(수정중) DOM  (0) 2013.07.02
(수정중) 첫 단계  (0) 2013.06.28




  • onload()
    • 브라우저가 HTML 문서를 모두 읽은 다음 각 Element를 객체로 만들고
    • Tree 구조로 구성한다. => Document Object Model(DOM)
    • DOM 객체 생성 후 화면을 출력하고 => onload() 호출한다.

window.onload = function() {

    • 화면을 출력한 후, 초기화 작업 기술

    • DOM API : getElementById("아이디")
      • DOM 트리에서 지정한 아이디 값을 갖는 엘리멘트를 찾는다.
      • Document(브라우저에게 제공하는 객체) 객체의 메서드이다.

var header = document.getElementById('header');

};

setTimeout()

- 지정된 시간에 딱 한번 함수를 호출해 실행시킨다.


$('#이벤트 객체 아이디').click( function(event) {

event.preventDefault();

setTimeout(function(){

$('목표지정코드').load('로드(불러올) 를 원하는 html문서의 위치와 이름');

}, 2000);

});


setTimeout(code, delay)

- 지정된 시간이 되면 특정 코드를 실행해주는 메서드이다.

- code: 일정시간이 지나고나서 실행시킬 자바스크립트 코드를 포함한 문자열

- delay: 문자열 code 내에 있는 자바스크립트 코드가 실행되기까지 걸리는 시간 (1/1000)초 단위


preventDefault()
- function의 파라메터의 event를 받아 일련의 처리를 할 수 있도록 한다.
- 기본 동작 및 href 를 작동하지 않도록 중지 시키고, 아래 코드들만 처리 할 수 있게 해준다.





<script> </script>는 body 안에 들어가도 실행된다.


<body>


<script>

window.onload = function () { 

    

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

    d1.onclick = function() {

    console.log("d1 눌렀다.");

    };

};

</script>


<h1 id='d1'>이 문자를 클릭하면 (console.log)가 찍힙니다.</h1>


</body>






removeChild


clock.innerHTML


'JAVA SCRIPT' 카테고리의 다른 글

60초 뒤에 실행하기  (0) 2019.01.11
콤마  (0) 2019.01.11
이벤트  (0) 2013.07.02
(수정중) 첫 단계  (0) 2013.06.28




JAVA SCRIPT




  • <script type="text/javascript">

-> 자바 스크립트 타입으로 지정


  • "use strict";

- 브라우저에게 자바스크립트를 엄격하게 검사할 것을 요구.

- 최신의 브라우저에 추가된 명령어로, "" 넣은 이유는 이전 브라우저에서

오류가 발생할 수 있기 때문에 미연의 방지차 정의 된 것이다.



  • 배경지식

- 변수는 페이지 단위로 관리된다.

- 페이지와 페이지 사이에는 절대 공유할 수 없다.

- 글로벌 변수 => 그 페이지 내에서 어디서든 접근할 수 있는 변수






변수와 자료형




- 변수 선언: 데이터형을 선언하지 않는다.

var a;                        // 변수에는 어떤 값을 넣을 수 있는가? - 마음대로.

a = 10; // number 데이터형

a = "홍";         // string 데이터형

a = true;         // boolean 데이터형

a = new Object(); // Object 데이터형

a = function() {}; // function 데이터형

- 출력: 브라우저의 콘솔 창으로 출력할 수 있다.

console.log(10); // 개발하는 동안 확인용으로 사용한다.




  • 바인딩이란?

- 변수의 데이터형의 결정되는 것.

- 값을 할당한 후 결정 된다.


var b;    // 바인딩 안되어 있는 상태: undefined

// 해당 변수에 값이 할당되지 않은 상태. 즉, 데이터형이 결정되어 있지 않은 상태.


console.log(b);

- 변수의 데이터형 알아내기: 바인딩 된 후 변수의 데이터형 확인 typeof()


b = 10;

console.log(typeof(b));


b = 10.5;

console.log(typeof(b));

- 동적 바인딩(dynamic binding <> static binding)

-> 예시) Java, C, C++, C#

- 변수의 데이터 형은 고정되어 있지 않다. 값을 할당하는 순간 결정되기 때문이다.

- 값을 할당할 때 데이터형이 결정되는 것.

- 가능한 변수의 용도를 결정했으면 그대로 사용.






자료형 검사: typeof()

자료형: null, undefined




b = "홍길동";

console.log(typeof(b));



b = true;

console.log(typeof(b));


b = null;

console.log(typeof(b));



b = new Object();

console.log(typeof(b));



b = function() {};

console.log(typeof(b));

- 이전 자바스크립트 명세에서는 var을 선언하지 않고 만든 변수는 글로벌 변수로 설정.

- 현재는 반드시 var을 붙여야 한다.

- 브라우저에게 자바스크립트 문법을 엄격하게 검사할 것을 요구. 'use strict";




  • 중복 선언?

- 오류가 아니다. 기존 변수 덮어쓴다.

var c = 10;

console.log(typeof(c));


var c = "홍길동";

console.log(c);



window 객체: 브라우저에 미리 정의된 객체

-> 브라우저의 정보를 다루는 객체

  • 글로벌 변수나 함수를 포함하고 있다.
  • 글로벌 변수는 모두 window 객체의 프로퍼티로 포함된다.
  • 글로벌 함수도 또한 모두 window 객체에 포함된다.

console.log(window.c);


var d = 20;

window.e = 30;


console.log(e);                                // e앞에 window 객체 레퍼런스가 생략된 것.

console.log(window.e);





기본 라이브러리

prompt(), confirm(), alert()



prompt()

prompt 리턴값은 string이다.


var r = prompt("당신의 나이는?");

console.log(r);



var r2 = confirm("당신은 비트 수강생입니까?", "제목입니까?");

console.log(r);



alert("오호라... 단순 메시지 출력할 때 사용");






배열: [ , , , ]


var names = ["홍길동", "임꺽정", "유관순", 20, function(){}, true];

for(var i = 0; i < names.lenght; i++){

console.log(names[0]);

}





    ==와 ===의 차이


var x1 = 20;

var x2 = "20";

if(x1 == x2){                                // 암시적 형변환이 발생함.

console.log("x1 == x2");

}


암시적 형변환 없이 정확하게 데이터형과 값이 일칳나는지 확인하고 싶다면?

if(x1 === x2){

console.log("x1 === x2");

} else {

console.log("x1! ==  x2");

}





console.log('52 + 273');            // 1번


console.log(52 + 273);              // 2번


console.log(parseInt('52') + 273);            // 3번: parseInt로 썼을 경우 데이터형으로 변환한다.

        

console.log(52 + '273');            // 4번


console.log('52' + '273');            // 5번





조건 연산자


var a = (20 > 30) ? "와우 정말?! ㅎㅎ" : "어후,,,";

console.log(a);




||와 &&의 다른 활용

var x = 20;


var b = true || (x = 30);

console.log(x, b);


var b = false || (x = 30);

console.log(x, b);


var age = prompt("니 나이 몇이냐?", "18");

// (age > 18) || console.log("미성년자입니다.");

(age < 19) && console.log("미성년자입니다.");






'JAVA SCRIPT' 카테고리의 다른 글

60초 뒤에 실행하기  (0) 2019.01.11
콤마  (0) 2019.01.11
이벤트  (0) 2013.07.02
(수정중) DOM  (0) 2013.07.02

+ Recent posts