코딩/자바스크립트

JS / 에러, 클래스

민여 2022. 4. 5. 20:46

에러 구문의 종류

종류 설명
try 코드 블록에서 오류를 테스트할 수 있는 구문
catch 오류를 처리할 수 있는 구문
throw 사용자 지정 오류를 만들 수 있는 구문
finally 결과와 관계없이 try 및 catch 후에 코드를 실행할 수 있는 구문

try catch

<body>
        <p id="test"></p>
        <script>
            var test = document.getElementById('test');

            try{
                aalert('안녕하세요');
            }
            catch(err){
                test.innerHTML = err.message;
            }
        </script>
    </body>  // aalert is not defined 라고 출력 //try catch는 세트로 사용됨 

 

Throws
오류가 발생되면 자바스크립트는 중지되고 오류메시지를 생성
                            ||
자바스크립트의 예외를 발생시켜 오류를 일부러 발생. 
=사용자 지정 오류를 만들수있음 
 ※예외 대상 String, Number, Boolean, Object 

 

try와 catch와 함께 throw를 사용하면

프로그램의 흐름을 제어하고 사용자 지정 오류메시지를 생성할수있다.

 

finally

결과와 관계없이 try 및 catch 후에 코드를 실행

 

Error 객체의 속성 종류

종류 설명
name 오류 이름을 설정하거나 반환
message 오류 메시지를 문자열로 설정하거나 반환

 

종류 설명
EvalError eval( )함수에서 오류가 발생
** eval( ) : 문자열을 코드로 변경해주는 함수
RangeError 숫자에서 범위를 벗어나면 오류가 발생
ReferenceError 잘못된 참조가 발생
SyntaxError 구문 오류가 발생
TypeError 값 유형에 대한 오류가 발생
URIError encodeURI( )에서 오류가 발생

- 최신 버전의 자바스크립트는 EvalError를 발생시키지 않습니다. 대신 SyntaxError를 사용하면 됩니다.

 

-----------------------------------------------------------------------------------------------

클래스 

 

className속성은 문서객체의 클래스명을 설정하거나 반환

var 변수명 = 객체선택.className;

 

//h1태그의 클래스명을 경고창에 띄워보기

 <body>
        <h1 class="title" id="text">제목태그</h1>
        <script>
            var text = document.getElementById('text')

            var cName = text.className;

            alert(cName);
        </script>

 

클래스명 지정 

문법

객체선택.className = '클래스명';

 

<body>
        <h1 id="text">제목태그</h1>
        <script>
            var text = document.getElementById('text')

            text.className = 'title';
        </script>
    </body>

 

 

 

classList 속성

classList속성의 문서객체의 클래스명을 DOMTokenList 객체로 반환
문서객체에서 CSS클래스를 추가, 제거 및 전환하는데 유용
IE9 이하의 버전에서는 적용안된다는 점
-크로스브라우징할때는 브라우저버전을 잘 확인

 

classList의 속성과 메서드

종류 설명
length 클래스 수를 반환
add('클래스명1','클래스명2',...)
문서객체 하나 이상의 클래스명을 추가하는 메서드
contains('클래스명') 문서객체에 매개변수의 클래스명이 있는지 여부를 true/false로 나타내는 메서드
item(index) 문서객체에서 지정된 인덱스번호가 있는 클래스명을 반환하는 메서드
인덱스 범위가 벗어나면 null반환
remove('클래스명1','클래스명2',...) 문서객체에서  하나 이상의 클래스명을 제거하는 메서드
** 존재하지 않는 클래스를 제거해도 오류가 발생되지 않음
toggle('클래스명'); 문서객체에 클래스명을 추가하거나 제거하는 것을 번갈아 실행하는 메서드
요소가 제거되면 false를 리턴, 요소가 추가되면 true를 리턴

 

<head>
        <meta charset="UTF-8">
        <title>JS - Class 속성</title>
        <style>
            .active{
                background-color: black; color: pink;
            }
        </style>
    </head>
    <body>
        <h1 id="text">제목태그</h1>
        <hr>
        <button id="add">클래스추가</button>
        <button id="remove">클래스제거</button>
        <script>
            //1. 문서객체선택
            var text = document.getElementById('text');
            var add = document.getElementById('add');
            var remove = document.getElementById('remove');

            //2. 추가버튼 클릭
            add.addEventListener('click',function(){
                text.classList.add('active');
            });

            //3. 제거버튼 클릭
            remove.addEventListener('click',function(){
                text.classList.remove('active');
            });
        </script>
    </body>

 

 

<body>
        <h1 id="text">제목태그</h1>
        <p id="test"></p>
        <script>
            //1. 문서객체선택
            var text = document.getElementById('text');
            var test = document.getElementById('test');

            //2. 클릭이벤트
            text.addEventListener('click',function(){
                //active클래스 토글처리
                this.classList.toggle('active');

                //contains메서드를 통한 active클래스를 갖고 있는지 여부 확인
                var is = this.classList.contains('active');

                if(is){ //클래스를 갖고 있다면
                    test.textContent = '클래스추가';
                }else{ //클래스를 갖고 있지 않다면
                    test.textContent = '클래스제거';
                }
            });
        </script>
    </body>