onClick中的“this”如何工作?

时间:2013-10-25 11:57:51

标签: javascript html browser onclick

我是javascript的新手。我很好奇浏览器如何使onClick属性起作用。 你有一个html:

<button id="1" onClick="reply_click(this.id)">B1</button>

浏览器执行(allways javascript?)脚本函数的功能是什么?

我想这类似于评估给onClick的字符串。

但我怀疑这些:这里的适用标准是什么?浏览器如何知道使用哪种脚本语言?如何通过javascript引擎填充this?脚本在什么上下文中执行?返回值会发生什么?在处理这些属性时,我想了解什么才能知道什么?

你能帮我理解发生了什么吗?

4 个答案:

答案 0 :(得分:6)

设置 onclick 属性时;浏览器接受你设置它的节点的引用,让我们调用这个引用button,然后进行转换

onclick="/* code */"

button.onclick = function (event) {eval(/* code */);};

单击事件被tirggered时,可以将该函数视为像这样被调用

button.onclick.call(button, click_event);

onclick的上下文button以及this的上下文为button。它包含在它自己的函数中,所以如果某些东西是var d,它将不会在全局范围内设置。


  

返回值会怎样?

返回false相当于调用event.preventDefault();,确切的行为描述为here


  

浏览器如何知道使用哪种脚本语言?

除非另有明确说明,否则

假设 JavaScript


  

在处理这些属性时,我想了解哪些内容可以依赖?

不要学习这些 HTML 属性,它们已过时,可能很危险并且将您的 HTML JavaScript 混合在一起。而是学会使用EventTarget.addEventListener

答案 1 :(得分:4)

Phew,这是很多问题!

  

Q值。浏览器执行什么(allways javascript?)脚本函数

     

Q值。浏览器如何知道使用哪种脚本语言

A。现代浏览器总是假设Javascript,除非它带有标签前缀,例如onclick="vbscript:alert('Hello World!');"

  

Q值。如何通过javascript引擎填充

A。 this始终引用添加了onclick的元素,在本例中为button元素

  

Q值。在什么上下文中执行脚本

A。脚本在窗口范围内执行。

  

Q值。返回值会发生什么

A. 返回值确定浏览器是否应继续执行此元素的默认代码。如果该按钮是提交按钮并且您返回false,则不会发布您的表单

  

Q值。在使用这些属性

时,我想了解什么才能知道我可以依赖什么?

A。一本Javascript书。看看亚马逊上的顶级Javascript书籍。

答案 2 :(得分:1)

浏览器假设JavaScript,主要是因为虽然理论上 可以是任何脚本语言,但实际上JavaScript已经赢了。

它执行onclick中的代码,其中this是触发点击事件的元素。

返回值的使用方式与element.onclick = function () {...}完全相同。

事实上,整个事情的作用相当于:

var element = document.getElementById('1');
element.onclick = new Function(element.getAttribute('onclick'));

答案 3 :(得分:0)

  

浏览器如何知道使用哪种脚本语言?

您需要写出<script>标签才能编写脚本。如果没有隐含脚本类型,则默认脚本为JavaScript。 如果您正在使用各种JavaScript库或类似jQuery,那么您需要在调用前使用$或jQuery。

  

返回值会怎样?

没有真正的回报价值。它基本上就是你用onClick调用的函数中发生的事情。