JavaScript onclick에서 "this"는 무엇입니까?


115
<a onclick="javascript:func(this)" >here</a>

this스크립트에서 무엇을 의미합니까?


4
@ JMCF125 어쨌든 그는 유용했습니다. 나는 onclick 이벤트에서 클릭 된 요소를 얻는 방법에 대해 Google을 검색하고 여기에 도착하여 답을 찾았습니다.
계정

자바 스크립트는 무엇을합니까? 왜이처럼 밤은 <a onclick="func(this)" >here</a>
J3STER

1
@ J3STER onclick에서 "javascript :"접두사가 잘못되었습니다. 아래 Tim Down의 답변 에서 설명을 찾을 수 있습니다 .
Mariano Desanze 2011

답변:



34

그것은 DOM 되는 onclick속성이 속하는 :

<script type="text/javascript"
        src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js">
</script>
<script type="text/javascript">
function func(e) {
  $(e).text('there');
}
</script>
<a onclick="func(this)">here</a>

(이 예에서는 jQuery 를 사용합니다 .)


22

onclick과 같은 이벤트 핸들러 속성의 값은 "javascript :"접두사가없는 JavaScript 여야합니다. javascript : 의사 프로토콜은 URL에 사용됩니다. 예를 들면 다음과 같습니다.

<a href="javascript:func(this)">here</a>

onclick="func(this)"그래도이 양식을 우선적으로 사용해야합니다 . 또한 위의 예에서 javascript : pseudo-protocol "this"를 사용하면 <a>요소가 아닌 창 개체를 참조합니다 .


1
이 답변은 엄격하게 말하면 질문에 직접 답변하기보다는 질문에 대한 조언 만 제공한다고 생각하지만 흥미로운 반대 투표입니다.
Tim Down

네 ... 당신은 정말로 질문에 대답하지 않았습니다.
Dave

1
@Dave : 충분합니다. 내가이 글을 썼을 때 이미 주요 질문에 대한 답변이있었습니다. 내 대답은 아마도 코멘트 였어야했지만 당시에 코멘트를 추가 할 충분한 담당자가 없었을 것 같습니다. 살고 배우십시오.
팀 다운

8
당시 담당자가 충분하지 않습니까? 그의 포도주를 뱉어
Jonathan

5

JavaScript this에서 작업을 포함하는 요소를 참조합니다. 예를 들어 다음과 같은 함수가있는 경우 hide():

function hide(element){
   element.style.display = 'none';
}

호출 hidethis 요소를 숨 깁니다. DOM의 다른 요소와 유사하더라도 클릭 한 요소 만 반환합니다.

예를 들어, this아래 HTML에서 숫자를 클릭하면 클릭 한 글 머리 기호 만 숨겨집니다.

<ul>
  <li class="bullet" onclick="hide(this);">1</li>
  <li class="bullet" onclick="hide(this);">2</li>
  <li class="bullet" onclick="hide(this);">3</li>
  <li class="bullet" onclick="hide(this);">4</li>
</ul>

4

여기 (this)는 dom 요소의 모든 기능 / 속성을 포함하는 객체입니다. 당신은 볼 수 있습니다

console.log(this);

그러면 계층이있는 dom 요소의 모든 속성 속성이 표시됩니다. 이것으로 dom 요소를 조작 할 수 있습니다.

또한 아래 링크에 설명하십시오.

http://www.quirksmode.org/js/this.html


3

키워드 하여 addEventListener의 이벤트

function getValue(o) {
  alert(o.innerHTML);
}

function hide(current) {
  current.setAttribute("style", "display: none");
}

var bullet = document.querySelectorAll(".bullet");

for (var x in bullet) { 
  bullet[x].onclick = function() {
    hide(this);
  };
};
 
/* Using dynamic DOM Event */
document.querySelector("#li").addEventListener("click", function() {
  getValue(this); /* this = document.querySelector("#li") Object */
});
li {
  cursor: pointer;
}
<ul>
  <li onclick="getValue(this);">A</li>
  <li id="li" >B</li>
  <hr />
  <li class="bullet" >1</li>
  <li class="bullet" >2</li>
  <li class="bullet" >3</li>
  <li class="bullet" >4</li>
</ul>


2

함수를 호출 할 때 "this"라는 단어는 함수를 호출 한 객체에 대한 참조입니다.

귀하의 예에서는 앵커 요소에 대한 참조입니다. 다른 쪽 끝에서 함수 호출은 전달 된 매개 변수를 통해 요소의 멤버 변수에 액세스합니다.


1

thisonclick메서드가 속한 개체를 참조합니다 . 따라서 내부 func thisa요소 의 DOM 노드 this.innerText가 될 것이며 here.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.