国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

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

2019-11-20 12:25:39
字體:
來源:轉載
供稿:網友

我們先看一個簡單的例子:

復制代碼 代碼如下:

<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則無此限制。

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 嫩江县| 都昌县| 高阳县| 汉川市| 明溪县| 桃源县| 大名县| 额尔古纳市| 平昌县| 应城市| 科技| 微山县| 朝阳市| 百色市| 潞西市| 黄浦区| 新晃| 深泽县| 宝坻区| 武强县| 融水| 宿州市| 齐齐哈尔市| 阳泉市| 周口市| 青浦区| 丹寨县| 胶南市| 彰化县| 郧西县| 陆河县| 广宁县| 尼玛县| 嘉善县| 五莲县| 和硕县| 从江县| 高唐县| 视频| 高青县| 修文县|