Programming/JavaScript
[Javascript] .attr() / .prop()
Cafe_Caramelo
2021. 5. 31. 22:05
반응형
" .attr()? .prop()? 무엇을 사용해야 할까? "
Attribute
- HTML에서 정의되는 속성(태그 생성 시 초기에 세팅되는 값)
- HTML 태그에 추가적인 정보를 제공한다
아래 코드를 살펴보자.
자신의 이름을 입력할 수 있는 <input>태그를 만들었다. 이렇게 일반적으로 태그 작성 시 입력된 id, name 값 등의 속성을 불러올 때 .attr() 메서드를 사용한다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- jQuery cdn -->
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
<h2<p>.attr() 메소드</p></h2>
<input type="text" id="given_name" name="given_name" placeholder="이름을 입력하세요.">
</body>
</html>
작성한 코드가 웹에 출력된 모습이다.
F12를 눌러 개발자 도구에서 .attr() 메소드를 통해 아래와 같이 id, name 속성값을 불러왔다.
.attr() 메소드를 통해 기존에 지정된 속성을 원하는 값으로 바꾸는 것 또한 가능하다.
아래 그림은 기존에 'given_name' 이었던 id 값을 '홍길동'으로 바꾼 모습이다.
Property
- DOM에서 정의되는 속성
- HTML이 아닌 DOM에서 정의된다
- DOM은 Javascript의 객체로서 존재한다. 따라서 get/set 속성을 통해 값이 얼마든지 바뀔 수 있다.
간단히 말하자면, HTML이 아닌 Javascript 기준의 속성값을 컨트롤하는 메소드.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- jQuery cdn -->
<script src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
<h2<p>.prop() 메소드</p></h2>
<input type="checkbox" name="chkbox1" class="chkbox"><label>Option-1</label><br/>
<input type="checkbox" name="chkbox2" class="chkbox"><label>Option-2</label><br/>
<input type="checkbox" name="chkbox3" class="chkbox"><label>Option-3</label><br/>
<input type="checkbox" name="chkbox4" class="chkbox"><label>Option-4</label>
</body>
</html>
.prop() 메소드를 활용해 체크된 체크박스를 불러왔다.
chkbox 클래스 중 3번째(eq(2)) 체크박스 체크 여부 확인 결과 true 값을 리턴한다.
.attr() 메소드를 사용하면 어떻게 될까? undefined, 아무 값도 리턴되지 않는다. 애초에 checked란 속성이 태그 내부에 정의되지 않았기 때문이다.
반응형