프론트

Javascript 스크립트 작성 방식

짱코딩러 2022. 9. 4. 21:35

 

<body>
    <script>
    function printResult(){
        var x = prompt("x 값을 입력하세요", 0);
        var y = prompt("y 값을 입력하세요", 0);

        x = parseInt(x);
        y = parseInt(y);

        // alert(x+y);      //알림창 띄움
        // btnPrint.value = x+y;    //버튼에 적힌 값 바뀜
        span1.innerText = x+y;      //화면에 적힌 값 바뀜
    }
    </script>

    <input type="button" value="클릭" onclick="printResult();" id="btnPrint"><br>
    <span id="span1" onclick="alert('hello');">스팬입니다.</span>
</body>

onload이벤트를 스크립트에 넣어주면 더 깔끔하게 코드를 작성할 수 있음.

 

1.아래의 코드처럼 스크립트에 바로 적용할 경우에는 스크립트가 읽히면서 바로 로드되므로 스크립트를 뒤로 빼준다.

<body>

    <input type="button" value="클릭" id="btnPrint"><br>
    <span id="span1" onclick="alert('hello');">스팬입니다.</span>
    <script>
    function printResult(){
        var x = prompt("x 값을 입력하세요", 0);
        var y = prompt("y 값을 입력하세요", 0);

        x = parseInt(x);
        y = parseInt(y);

        // alert(x+y);      //알림창 띄움
        // btnPrint.value = x+y;    //버튼에 적힌 값 바뀜
        span1.innerText = x+y;      //화면에 적힌 값 바뀜
    }
    btnPrint.onclick = printResult; //함수를 호출하는게 아니라(결과값을 넣는게 아니라) 함수를 대입하는것이므로 괄호 생략

    </script>
</body>

 

2.윈도우가 로드될 때 실행 되도록 만들어줄 수도 있다.(윈도우는 가장 나중에 로드됨)

    <script>
        function printResult(){
            var x = prompt("x 값을 입력하세요", 0);
            var y = prompt("y 값을 입력하세요", 0);
    
            x = parseInt(x);
            y = parseInt(y);
    
            // alert(x+y);      //알림창 띄움
            // btnPrint.value = x+y;    //버튼에 적힌 값 바뀜
            span1.innerText = x+y;      //화면에 적힌 값 바뀜
        }
        function init(){
        btnPrint.onclick = printResult; //함수를 호출하는게 아니라(결과값을 넣는게 아니라) 함수를 대입하는것이므로 괄호 생략
        }
    
        window.onload = init;
        </script>
</head>
<body>
    <input type="button" value="클릭" id="btnPrint"/><br/>
    <span id="span1" onclick="alert('hello');">스팬입니다.</span>
</body>

 

3.객체명을 분리해주는게 올바른 방법

document : 도큐먼트가 갖고있는 수많은 태그들을 가진 보따리

    <script>
        function printResult(){
            //document에서 btn-print라는 id의 객체를 달라고 요청
            var btnPrint = document.getElementById("btn-print");

            var x = prompt("x 값을 입력하세요", 0);
            var y = prompt("y 값을 입력하세요", 0);
    
            x = parseInt(x);
            y = parseInt(y);
    
            // alert(x+y);      //알림창 띄움
            // btnPrint.value = x+y;    //버튼에 적힌 값 바뀜
            span1.innerText = x+y;      //화면에 적힌 값 바뀜
        }
        function init(){
            var btnPrint =document.getElementById("btn-print");
            btnPrint.onclick = printResult;
        }
    
        window.onload = init;
        </script>
</head>

 

4.스크립트 코드의 지역화

먼저 window.onload = function() 만들어주고

  => 필요한 도구들을 준비해서

  => 이벤트 코드를 작성한다.

    <script>
        //init()였던 값을 직접 입력해줌(로 감싸줌)
        window.onload = function(){
            var btnPrint =document.getElementById("btn-print");

            //printResult() 함수를 익명함수로 바꿔 값을 넣어줌
            btnPrint.onclick = function(){
                var x = prompt("x 값을 입력하세요", 0);
                var y = prompt("y 값을 입력하세요", 0);
        
                x = parseInt(x);
                y = parseInt(y);
        
                span1.innerText = x+y;
            };
        }
    </script>
</head>

 

5.같은 이름의 함수가 만들어 졌을 때 덮어씌워지는 것을 방지하기 위해 이벤트리스너를 사용해줌

(js코드를 따로 분리해서 이용하면서 팀원들과 협업할 때 코드가 중복될 수 있음)

        //이벤트 이름은 load
        window.addEventListener("load",function(){
            var btnPrint =document.getElementById("btn-print");

            btnPrint.onclick = function(){
                var x = prompt("x 값을 입력하세요", 0);
                var y = prompt("y 값을 입력하세요", 0);
        
                x = parseInt(x);
                y = parseInt(y);
        
                span1.innerText = x+y;
            };
        });//잘 닫아주자