728x90

 

이벤트(Event)

 

A.이벤트 설정 방법

 

1.고전 이벤트 모델

요소에 접근해서 속성 집어넣어서 이벤트 추가하는 것

 

이벤트 추가(기능 추가)

var test1 = document.getElementById('test1'); // 요소 접근
// var test1에 속성 넣고

// 이벤트 추가
test1.onclick = function() {
        console.log('test1이 실행되었습니다.');
}

 

이벤트 삭제(기능 삭제)

test2.onclick = function() {
        console.log('test2가 실행되면서 test1이벤트를 삭제하였습니다.');
        test1.onclick = null;    // null 집어넣어서 삭제
}

 

다른 이벤트 실행방법

지금까지 직접 펑션 집어넣었었는데, 펑션을 하나 미리 만들어 놓고 거기에다 연결도 가능

var test2_1 = document.getElementById('test2_1');
function test21() {
    alert('이름으로 이벤트 연결');
}
test2_1.onclick = test21;

 

다수의 이벤트 동시에 연결가능

var test2_1 = document.getElementById('test2_1');
function test21() {          // function 미리 선언
    alert('이름으로 이벤트 연결');
}
test2_1.onclick = test21;   // 미리 선언한 function 호출
 
// 다수의 이벤트 동시 연결 가능
test2_1.onmouseover = function() {      // onmouseover : 마우스포인터가 해당 위치로 가면 발생
    console.log('여러 이벤트 동시 연결 가능');
    // onmouseover : 마우스가 올라간것에 대한 이벤트 
}

test2_1.onclick = test21;로 위에서 선언된 test21 펑션을 호출하면서 바로 아랫줄에서 마우스포인터가 해당 버튼에 올라가면 이벤트 발생하도록 또 펑션을 연결하므로써 동시다발적으로 이벤트가 발생 가능하게 함

 

2.인라인 모델

태그안에 집어넣는게 인라인모델

<h3>인라인 모델</h3>
    <button onclick="**test4()**;">Event - 인라인 모델</button>
    <button onclick="alert('test4 가 실행되었습니다')">Event - 인라인 모델</button>
    <script>
        function test4(){
            alert('test4가 실행되었습니다');
        }
    </script>

 

3.표준 이벤트 모델

 

addEventListener : 이벤트 추가

addEventListener(연결이벤트, 실행할 함수)
<button id="test5">표준 이벤트 모델 : test5 실행확인</button>
<script>
    var test5 = document.getElementById('test5');

    function fn_test5_1() {
        console.log('test5가 클릭됐습니다.');
    }
    function fn_test5_2() {
        console.log('test5에 들어왔습니다.');
    }

    // 이벤트 추가 : addEventListener
    test5.addEventListener('click', fn_test5_1);     // click하면 fn_test5_1 함수 실행하라는 코드
    test5.addEventListener('mouseover', fn_test5_2); // 마우스포인터가 올라가면 fn_test5_2 함수를 실행하라는 코드

</script>

 

removeEventListener : 이벤트 삭제

removeEventListener(삭제할 이벤트, 삭제할 함수)
<button id="test5">표준 이벤트 모델 : test5 실행확인</button>
<button id="test6">표준 이벤트 모델 : test6 실행확인</button>
<script>
    var test5 = document.getElementById('test5');
    var test6 = document.getElementById('test6');

    // 이벤트 삭제 : removeEventListener
    test6.addEventListener('click', function() {     // 클릭하면 function() 함수를 실행하라는 코드
        console.log('test6에 들어오면서 test5의 클릭이벤트를 제거 했습니다.');
        **test5.removeEventListener('click',fn_test5_1);**
        // 이벤트 삭제 효과 : 이벤트 제거 후, test5 진입은 되나 클릭은 안되게 된다.

    });

</script>

 

 

 


 

이벤트 기본 동작이란?

웹브라우저의 구성요소들은 각각 기본적인 동작 방법을 가지고 있다.

  • 텍스트 필드에 포커스를 준 상태에서 키보드를 입력하면 텍스트가 입력된다.
  • 폼에서 submit 버튼을 누르면 데이터가 전송된다.
  • a 태그를 클릭하면 href 속성의 URL로 이동한다.

이러한 기본적인 동작들을 기본 이벤트라고 하는데 사용자가 만든 이벤트를 이용해서 이러한 기본 동작을 취소할 수 있다.

 

이벤트 기본동작 취소하는 방법 3가지

 

1)inline

이벤트의 리턴값이 false이면 기본 동작이 취소된다.

<p>
    <a href="http://opentutorials.org" 
			onclick="if(document.getElementById('prevent').checked) return false;">opentutorials</a>
</p>
<p>
    <form action="http://opentutorials.org" 
					onsubmit="if(document.getElementById('prevent').checked) return false;">
            <input type="submit" />
    </form>
</p>

 

2)property 방식

리턴 값이 false이면 기본동작이 취소된다.

<p>
    <a href="http://opentutorials.org">opentutorials</a>
</p>
<p>
    <form action="http://opentutorials.org">
            <input type="submit" />
    </form>
</p>
<script>
    document.querySelector('a').onclick = function(event){
        if(document.getElementById('prevent').checked)
            return false;
    };
     
    document.querySelector('form').onclick = function(event){
        if(document.getElementById('prevent').checked)
            return false;
    };
 
</script>

 

3)addEventListener 방식

이 방식에서는 이벤트 객체의 preventDefault 메소드를 실행하면 기본 동작이 취소된다

<label>prevent event on</label>
<input id="prevent" type="checkbox" name="eventprevent" value="on" />
<p>
    <a href="http://opentutorials.org">opentutorials</a>
</p>
<p>
    <form action="http://opentutorials.org">
            <input type="submit" />
    </form>
</p>
<script>
    document.querySelector('a').addEventListener('click', function(event){
        if(document.getElementById('prevent').checked)
            event.preventDefault();
    });
     
    document.querySelector('form').addEventListener('submit', function(event){
        if(document.getElementById('prevent').checked)
            event.preventDefault();
    });

</script>

출처 : https://opentutorials.org/course/1375/6769

728x90
반응형
728x90

 

1.for문

반복횟수가 보통 명확할 때 사용

 

ex)사용 예제

Math.random() :

랜덤으로 숫자선택 : Math클래스의 random() 클래스 사용

임의의 0~1의 더블값을 반환

int random = (int)(Math.random() * 10 + 1);

 

// 1부터 10 사이의 임의의 난수를 정해 1부터 난수까지의 정수 합계 (난수 임의의 숫자)

int random = (int)(Math.random() * 10 + 1);
int sum = 0; // 변수 초기화
		for(int i=1; i<=random; i++) {
				sum = sum + i;
//			sum += i;       위와 같은 코드
		}
System.out.println("1부터 "+random+"까지의 정수합계 : "+sum);

 

 

2.while문

for문 while문 서로 변환가능

형태

while(조건식) { // true/false로 출력
		수행문장;
}

반복횟수가 보통 불명확할 때 사용

int i = 1;
whiel(i<=10) {
		System.out.println(i+"출력");
			i++;// 반복문 인덱스 넘버  +1씩
} // 1 2 3 4 5 6 7 8 9 10

 

3.do while문

형태

do {
		반복 실행할 문장
}whlie(조건식);

do ~ while문은 for문이나 while문과 다른점

true이든 false이든 상관없이 중괄호{ } 안의 문장을

무조건 한번 실행시킨 후 조건을 검사하여 반복을 결정

 

조건식을 나중에 확인하기에 무조건 1번이상 문장을 실행하게됨

메뉴 코드에서 많이 사용

 

몇번 사용할지 알 수 없는 상황에서는 while문 사용이 보편적

 

return

return;

나(메소드-메인메소드)를 호출한 쪽으로 돌아가는 역할

결과값 반환 and 메소드 끝내는 역할

case 9 : System.out.println("프로그램 종료"); return;
// 이 리턴은 값을 안가지고 돌아가는 리턴

 

return 종류

1)값 가지고 돌아가는 return

2)값 없이 돌아가는 return

 

 

728x90
반응형
728x90

 

 

 

코드에서 중점적으로 봐야할 부분

(코드를 끌어온다거나 새로 만들면서 중점적으로 봐야할 부분)

 

1. 컨트롤러가 dispatcher servlet으로부터 어떤 url로 받아올지에 대한 url 설정 부분

2.page : 해당 게시물을 상세보기로 들어갔다 뒤로가기해서 나와도 해당 페이지 번호를 유지하기 위해 필요한 값

3.required=false 옵션을 안해놓으면 항상 값이 들어가야하기 때문에 처음 페이지 들어갈 때는 page값에 수가 없으므로 에러 발생

4.Integer page : page가 int라 null 못들어가서 int 타입으로 받으면 parsing 해줘야하니 래퍼클래스(wrapper)로 한번에 받아옴

5. model과 ModelAndView 둘 중 하나 선택가능

핵심 데이터값이라 알아둬야하는 변수명

6. service를 거쳐 dao로 보낼 메소드명

7.setViewName() 메소드를 통해 어느 뷰를 보여줄 지 결정하는 부분

8.아래처럼 예외(exception)처리해도 되고, 에러페이지를 따로 만들어서 거기로 에러메시지 값과 함께 보내도됨 

9.return  : 리턴 유무 여부와 리턴할 데이터타입 잊지말고 체크

 

 

728x90
반응형
728x90

1.매개인자로 전달하기

2.매개인자로 스스로를 전달하기

3.함수의 리턴처리

4.매개변수로 함수 전달

5.함수 리턴

 

 

 

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>04_Function_p</title>


    <h3>매개인자로 스스로를 전달하기</h3>
    <button onclick="funcPara1('매개인자로 스스로를 전달하기1')">매개인자로 스스로를 전달하기11</button>
    <script>
        function funcPara1(parameter){
            alert(parameter);   // 매개인자로 스스로를 전달하기1
        }
    </script>
    <button onclick="funcPara2(this)">매개인자로 스스로를 전달하기22</button>
    <script>
        function funcPara2(parameter2){
            alert(parameter2);  // [object HTMLButtonElement]
            alert(parameter2.innerHTML);  // 매개인자로 스스로를 전달하기22
        }
    </script>
    <br><br>
    <button onclick="a1('b1');">a1</button>
    <script>
        function a1(para){
            alert(para); // b1
        }
    </script>
    <button onclick="c1(this);">d1</button>
    <script>
        function c1(para){
            alert(para.innerHTML); // d1
        }
    </script>
    
    
    <br><br><br>

    <button onclick="retur();">함수의 리턴 : 리턴값있는 다른 함수 호출하기</button>
    <script>
        function retur(){
            var getReturn = returFunc();
            alert(getReturn);
        }
        function returFunc(){
            return Math.random() * 10 + 1;  // 9.213956197609749
        }
    </script>
    <button onclick="aaa();">함수의 리턴처리</button>
    <script>
        function aaa(){
            var ref = returFunc();  // 9.213956197609749
            alert(ref);
        }
        
    </script>

<br><br>

    <h3>매개변수로 함수 전달</h3>       
    <button onclick="try1(callfunc);">매개변수로 함수 전달</button>
    <script>
        function try1(parameter){
            parameter();      // 매개변수로 함수를 호출함
        }
        function callfunc(){
            alert("매개변수로 함수를 호출함");
        }
    </script>
    <button onclick="try2(try2_1);">매개변수로 함수 전달</button>
    <script>
        function try2(try22){
            try22();
        }
        function try2_1(){
            alert("매개변수로 함수 전달");
        }
    </script>


    <h3>함수 리턴</h3>
    <!-- function 받아와서 실행시켜줘야해 onclick="test8()();"에다가 ()소괄호 추가 -->
    <button onclick="try3()();">함수 리턴</button>  <!-- 함수 리턴 : 익명함수 리턴 -->
    <script>
        function try3(){
            return function(){  
                alert("함수 리턴 : 익명함수 리턴");
            }
        }
    </script>
    <button onclick="try3_1()()">함수 리턴시키기</button>    <!-- 받아온 함수를 실행을 위해 ()추가 -->
    <script>
        function try3_1(){
            return function(){
                alert("방법이 너무 많아서 헷갈릴 듯");
            }
        }
    </script>

    



</head>
<body>
    






</body>
</html>
728x90
반응형

+ Recent posts