JS中的THIS和WINDOW.EVENT.SRCELEMENT详解

作者:hebedich 时间:2023-07-20 20:48:51 

我们先看一个简单的例子:


<input type="text" onblur="alert(this.value)"/>完全没有问题。

那么什么情况下不可以用?


fuction method()
{
 alert(this.value);
}
<input type="text" onblur="method()"/>

这个就不可以,因为method()是被响应函数调用的函数。

那么这种情况下怎么办?

方法一:


fuction method(btn)
{
 alert(btn.value);
}
<input type="text" onblur="method(this)"/>

没问题!

方法二:


fuction method()
{
 alert(window.event.srcElement.value);
}
<input type="text" onblur="method()"/>

没问题!window.event.srcElement取得触发事件的控件

我们在看一个稍微绕一点的例子


<head>
 <script type="text/javascript">
   function InitEvent() {
     var inputs = document.getElementsByTagName_r("input");
     for (var i = 0; i < inputs.length; i++) {
       inputs[i].onblur = OnblurEvent;
     }
   }
   function OnblurEvent() {
     // OnblurEvent是onblur的响应函数,而不是被响应函数调用的函数
     // 所以可以用this来获取发生事件的对象
     if (this.value.length > 0) {
       this.style.backgroundColor = "white";
     }
     else {
       this.style.backgroundColor = "red";
     }
   }
 </script>
</head>
<body onload="InitEvent()">
 <input id="Text1" type="text" />
 <input id="Text2" type="text" />
 <input id="Text3" type="text" />
</body>
</html>

我们再来看看2者之间的区别和联系

this:

  下面先看一个例子:


<html>
<title>this与srcElement的区别</title>
<head>
<script type="text/javascipt>"
function btnClick(){
 alert(this.value);
}
</script>
</head>
<body>
<input type="button" value="单击" onclick="btnClick()"/>
</body>
</html>

 此时弹出的答案为“undefined”,说明在调用函数时不能使用this.属性来获取。再看下一个例子:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
  <title>无标题页</title>
  <script type="text/javascript">
  function btnClick(btn){
   alert(btn.value);
  }
  </script>
</head>
<body>
<input type="button" onclick="btnClick(this)" value="单击" />

</body>
</html>

此时得出的答案为“单击”,此时为什么可以呢?从代码中可以看出,在onclick事件调用函数btnClick()时,将this当作参数传递给了函数。

综合以上:在函数调用时不能直接使用this.属性来获取,而必须将this当作参数传递。

 window.event.srcElement:

下面看一个例子:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
  <title>无标题页</title>
  <script type="text/javascript">
  function btnClick(){
   alert(window.event.srcElement.value);
  }
  </script>
</head>
<body>
<input type="button" onclick="btnClick()" value="单击" />

</body>
</html>

此时得出的答案为“单击”,说明在调用函数时可以使用window.event.srcElement.属性来获取。

为什么this不能直接使用而window.event.srcElement可以直接使用呢?从单纯的字面上说this的意思是“当前”。在函数调用时,没有指定具体是哪一个控件,在函数中直接用this是不可以的。在第二段代码中就将this当成了参数传递,所以能得出正确的答案。

其实this和window.event.srcElement的使用区别是:如果要直接使用this.属性,此时的函数不能是被调用的而必须是响应函数,而window.event.srcElement则无此限制。

以上所述就是本文的全部内容了,希望大家能够喜欢。

标签:THIS,WINDOW.EVENT.SRCELEMENT
0
投稿

猜你喜欢

  • 基于JS实现简单的样式切换效果代码

    2024-04-22 13:08:53
  • 如何恢复MySQL主从数据一致性

    2024-01-26 23:34:33
  • Python Django模板之模板过滤器与自定义模板过滤器示例

    2023-10-31 20:37:48
  • node实现mock-plugin中间件的方法

    2024-05-13 10:05:59
  • Python pygorithm模块用法示例【常见算法测试】

    2023-05-19 00:23:59
  • 在ASP.NET 2.0中操作数据之五十五:编辑和删除现有的二进制数据

    2023-07-10 02:05:43
  • python多线程方法详解

    2023-10-16 02:46:31
  • MySQL与PHP的基础与应用专题之数据控制

    2023-11-23 01:03:21
  • Django中ORM外键和表的关系详解

    2022-04-27 10:25:59
  • ASP+MSSQL2000 数据库被批量注入后的解决方法第1/2页

    2011-04-06 10:50:00
  • Python的Django框架中的URL配置与松耦合

    2022-11-19 10:23:33
  • 巧用正则表达式获取新闻中图片地址

    2010-07-17 13:09:00
  • 利用CSS改善网站可访问性

    2010-10-20 20:12:00
  • Python回调函数用法实例详解

    2021-04-10 14:31:15
  • JS点击图片弹出文件选择框并覆盖原图功能的实现代码

    2024-02-26 07:17:33
  • WEB打印大全

    2023-06-30 14:35:15
  • Python+Opencv实现计算闭合区域面积

    2023-03-17 03:02:44
  • python的scipy实现插值的示例代码

    2022-11-22 15:30:53
  • .Net Core SDK命令介绍及使用

    2024-05-13 09:16:00
  • 2008年个性设计挂历参考

    2007-12-29 20:30:00
  • asp之家 网络编程 m.aspxhome.com