最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2015年05月25日 08:47:56   投稿:hebedich  
對(duì)于js初學(xué)著必須理解this和srcElement的應(yīng)用,這也是面試中經(jīng)??嫉降?。下面我們就通過(guò)幾個(gè)示例來(lái)詳細(xì)了解下

我們先看一個(gè)簡(jiǎn)單的例子:

復(fù)制代碼 代碼如下:

<input type="text" onblur="alert(this.value)"/>完全沒(méi)有問(wèn)題。

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

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

這個(gè)就不可以,因?yàn)閙ethod()是被響應(yīng)函數(shù)調(diào)用的函數(shù)。

那么這種情況下怎么辦?

方法一:

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

沒(méi)問(wèn)題!

方法二:

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

沒(méi)問(wèn)題!window.event.srcElement取得觸發(fā)事件的控件

我們?cè)诳匆粋€(gè)稍微繞一點(diǎn)的例子

<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的響應(yīng)函數(shù),而不是被響應(yīng)函數(shù)調(diào)用的函數(shù)
      // 所以可以用this來(lái)獲取發(fā)生事件的對(duì)象
      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>

我們?cè)賮?lái)看看2者之間的區(qū)別和聯(lián)系

this:

  下面先看一個(gè)例子:

 <html>
 <title>this與srcElement的區(qū)別</title>
 <head>
 <script type="text/javascipt>"
 function btnClick(){
  alert(this.value);
 }
 </script>
 </head>
 <body>
 <input type="button" value="單擊" onclick="btnClick()"/>
 </body>
 </html>

 此時(shí)彈出的答案為“undefined”,說(shuō)明在調(diào)用函數(shù)時(shí)不能使用this.屬性來(lái)獲取。再看下一個(gè)例子:

 <!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>無(wú)標(biāo)題頁(yè)</title>
   <script type="text/javascript">
   function btnClick(btn){
    alert(btn.value);
   }
   </script>
 </head>
 <body>
 <input type="button" onclick="btnClick(this)" value="單擊" />
 
 </body>
 </html>

此時(shí)得出的答案為“單擊”,此時(shí)為什么可以呢?從代碼中可以看出,在onclick事件調(diào)用函數(shù)btnClick()時(shí),將this當(dāng)作參數(shù)傳遞給了函數(shù)。

綜合以上:在函數(shù)調(diào)用時(shí)不能直接使用this.屬性來(lái)獲取,而必須將this當(dāng)作參數(shù)傳遞。

 window.event.srcElement:

下面看一個(gè)例子:

 <!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>無(wú)標(biāo)題頁(yè)</title>
   <script type="text/javascript">
   function btnClick(){
    alert(window.event.srcElement.value);
   }
   </script>
 </head>
 <body>
 <input type="button" onclick="btnClick()" value="單擊" />
 
 </body>
 </html>

此時(shí)得出的答案為“單擊”,說(shuō)明在調(diào)用函數(shù)時(shí)可以使用window.event.srcElement.屬性來(lái)獲取。

為什么this不能直接使用而window.event.srcElement可以直接使用呢?從單純的字面上說(shuō)this的意思是“當(dāng)前”。在函數(shù)調(diào)用時(shí),沒(méi)有指定具體是哪一個(gè)控件,在函數(shù)中直接用this是不可以的。在第二段代碼中就將this當(dāng)成了參數(shù)傳遞,所以能得出正確的答案。

其實(shí)this和window.event.srcElement的使用區(qū)別是:如果要直接使用this.屬性,此時(shí)的函數(shù)不能是被調(diào)用的而必須是響應(yīng)函數(shù),而window.event.srcElement則無(wú)此限制。

以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。

相關(guān)文章

最新評(píng)論

措勤县| 辉南县| 澄江县| 柳州市| 澄城县| 舞阳县| 都兰县| 台东市| 班玛县| 曲阜市| 平遥县| 额敏县| 开平市| 安泽县| 海门市| 沈丘县| 台南县| 双柏县| 新昌县| 宁德市| 西丰县| 璧山县| 平凉市| 常州市| 田东县| 共和县| 中超| 若尔盖县| 兴城市| 桂阳县| 房山区| 襄樊市| 新泰市| 噶尔县| 托克托县| 泰顺县| 法库县| 阜宁县| 克山县| 卢湾区| 上饶县|