JavaScript onclick中的"this"是什么?

omg*_*omg 108 javascript

<a onclick="javascript:func(this)" >here</a>
Run Code Online (Sandbox Code Playgroud)

this脚本中有什么意思?

TM.*_*TM. 92

在您询问的情况下,this表示HTML DOM元素.

所以它将是<a>被点击的元素.

  • 有人可以链接到规范吗?天真的看http://www.w3.org/TR/DOM-Level-3-Events没用. (5认同)

Ste*_*202 32

它指的是在该元件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>
Run Code Online (Sandbox Code Playgroud)

(这个例子使用jQuery.)


Tim*_*own 21

事件处理程序属性(如onclick)的值应该只是JavaScript,没有任何"javascript:"前缀.javascript:伪协议用于URL,例如:

<a href="javascript:func(this)">here</a>
Run Code Online (Sandbox Code Playgroud)

您应该onclick="func(this)"优先使用该表单.另请注意,在上面的示例中,使用javascript:pseudo-protocol"this"将引用窗口对象而不是<a>元素.

  • 当时没有足够的代表?*吐出他的酒* (6认同)

Ste*_*rry 5

在JavaScript this中指的是包含操作的元素.例如,如果您有一个名为的函数hide():

function hide(element){
   element.style.display = 'none';
}
Run Code Online (Sandbox Code Playgroud)

调用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>
Run Code Online (Sandbox Code Playgroud)


Dee*_*yan 5

这里 (this) 是一个包含 dom 元素的所有功能/属性的对象。你可以看到

console.log(this);
Run Code Online (Sandbox Code Playgroud)

这将显示具有层次结构的 dom 元素的所有属性。您可以通过此操作 dom 元素。

另请在以下链接中进行描述:-

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


ant*_*ove 5

keyword this in addEventListener event

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 */
});
Run Code Online (Sandbox Code Playgroud)
li {
  cursor: pointer;
}
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)