본문 바로가기

Programming/JavaScript

[Javascript] .attr() / .prop()

반응형

" .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란 속성이 태그 내부에 정의되지 않았기 때문이다.

반응형