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

首頁 > 語言 > JavaScript > 正文

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

2024-05-06 16:20:45
字體:
供稿:網(wǎng)友

對于js初學(xué)著必須理解this和srcElement的應(yīng)用,這也是面試中經(jīng)常考到的。下面我們就通過幾個(gè)示例來詳細(xì)了解下

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

代碼如下:

<input type="text" onblur="alert(this.value)"/>完全沒有問題。

完全沒有問題。

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

 

 
  1. fuction method() 
  2. alert(this.value); 
  3. <input type="text" onblur="method()"/> 

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

那么這種情況下怎么辦?

方法一:

 

 
  1. fuction method(btn) 
  2. alert(btn.value); 
  3. <input type="text" onblur="method(this)"/> 

沒問題!

方法二:

 

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

沒問題!window.event.srcElement取得觸發(fā)事件的控件

我們在看一個(gè)稍微繞一點(diǎn)的例子

 

 
  1. <head> 
  2. <script type="text/javascript"
  3. function InitEvent() { 
  4. var inputs = document.getElementsByTagName_r("input"); 
  5. for (var i = 0; i < inputs.length; i++) { 
  6. inputs[i].onblur = OnblurEvent; 
  7. function OnblurEvent() { 
  8. // OnblurEvent是onblur的響應(yīng)函數(shù),而不是被響應(yīng)函數(shù)調(diào)用的函數(shù) 
  9. // 所以可以用this來獲取發(fā)生事件的對象 
  10. if (this.value.length > 0) { 
  11. this.style.backgroundColor = "white"
  12. else { 
  13. this.style.backgroundColor = "red"
  14. </script> 
  15. </head> 
  16. <body onload="InitEvent()"
  17. <input id="Text1" type="text" /> 
  18. <input id="Text2" type="text" /> 
  19. <input id="Text3" type="text" /> 
  20. </body> 
  21. </html> 

我們再來看看2者之間的區(qū)別和聯(lián)系

this:

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

 

 
  1. <html> 
  2. <title>this與srcElement的區(qū)別</title> 
  3. <head> 
  4. <script type="text/javascipt>" 
  5. function btnClick(){ 
  6. alert(this.value); 
  7. </script> 
  8. </head> 
  9. <body> 
  10. <input type="button" value="單擊" onclick="btnClick()"/> 
  11. </body> 
  12. </html> 

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

 

 
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
  2. <html xmlns="http://www.w3.org/1999/xhtml" > 
  3. <head> 
  4. <title>無標(biāo)題頁</title> 
  5. <script type="text/javascript"
  6. function btnClick(btn){ 
  7. alert(btn.value); 
  8. </script> 
  9. </head> 
  10. <body> 
  11. <input type="button" onclick="btnClick(this)" value="單擊" /> 
  12.  
  13. </body> 
  14. </html> 

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

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

window.event.srcElement:

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

 

 
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
  2. <html xmlns="http://www.w3.org/1999/xhtml" > 
  3. <head> 
  4. <title>無標(biāo)題頁</title> 
  5. <script type="text/javascript"
  6. function btnClick(){ 
  7. alert(window.event.srcElement.value); 
  8. </script> 
  9. </head> 
  10. <body> 
  11. <input type="button" onclick="btnClick()" value="單擊" /> 
  12.  
  13. </body> 
  14. </html> 

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

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

this和window.event.srcElement的使用區(qū)別

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

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 双鸭山市| 手游| 乐亭县| 乐东| 北京市| 盈江县| 三穗县| 开阳县| 海阳市| 施秉县| 桃园市| 沙洋县| 福鼎市| 叙永县| 积石山| 如皋市| 天长市| 嘉义市| 云浮市| 汝州市| 崇仁县| 华容县| 时尚| 谢通门县| 万安县| 大安市| 怀远县| 崇州市| 宾川县| 马龙县| 离岛区| 彰武县| 南康市| 定结县| 永福县| 溧阳市| 渭源县| 缙云县| 潢川县| 永安市| 班玛县|