欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入淺析JavaScript中對事件的三種監(jiān)聽方式

 更新時間:2015年09月29日 16:38:40   作者:MaxIE  
最近這段時間因為每天要修改網(wǎng)站,為網(wǎng)站做特效,所以看了很多的js接觸事件,自己只會使用一小部分,有時用的時候也比較混亂,現(xiàn)在系統(tǒng)的整理了一下,本篇文章跟大家分享的是JavaScript中對事件的三種監(jiān)聽方式

事件(Event)是JavaScript應(yīng)用跳動的心臟,也是把所有東西粘在一起的膠水,當我們與瀏覽器中Web頁面進行某些類型的交互時,事件就發(fā)生了。

第一種監(jiān)聽方式,也是最普遍使用的方式,是直接在代碼上加載事件,產(chǎn)生效果:

<table>
<tr onmouseover='this.style.backgroundColor="red"' onmouseout='this.style.backgroundColor=""'><td>text1</td><td>text2</td></tr>
<tr onmouseover='this.style.backgroundColor="red"' onmouseout='this.style.backgroundColor=""'><td>text3</td><td>text4</td></tr>
<tr onmouseover='this.style.backgroundColor="red"' onmouseout='this.style.backgroundColor=""'><td>text5</td><td>text5</td></tr>
</table>

第二種監(jiān)聽方式,是使用DOM的方式獲取對象,并加載事件:

<table>
<tr><td>text1</td><td>text2</td></tr>
<tr><td>text3</td><td>text4</td></tr>
<tr><td>text5</td><td>text5</td></tr>
</table>
<script>
doms = document.getElementsByTagName('tr');
for(i=0;i<doms.length;i++)
{
  doms[i].onmouseover = function()
  {
    this.style.backgroundColor = "red";
  }
  doms[i].onmouseout = function()
  {
    this.style.backgroundColor = "";
  }
}
</script>

第三種監(jiān)聽方式,是使用標準的addEventListener方式和IE私有的attachEvent方式,因為IE的attachEvent方式在參數(shù)傳遞時的缺陷,這個問題被搞得稍許有些復雜了:

<table>
<tr><td>text1</td><td>text2</td></tr>
<tr><td>text3</td><td>text4</td></tr>
<tr><td>text5</td><td>text5</td></tr>
</table>
<script>
doms = document.getElementsByTagName('tr');
function show_color(where)
{
  this.tagName ? where = this : null
  where.style.backgroundColor = "red";
}
function hide_color(where)
{
  this.tagName ? where = this : null
  where.style.backgroundColor = "";
}
function for_ie(where,how)
{
  return function()
  {
    how(where);
  }  
}
for(i=0;i<doms.length;i++)
{
  try
  {
    doms[i].addEventListener('mouseover',show_color,false);
    doms[i].addEventListener('mouseout',hide_color,false);
  }
  catch(e)
  {
    doms[i].attachEvent('onmouseover',for_ie(doms[i],show_color));
    doms[i].attachEvent('onmouseout',for_ie(doms[i],hide_color));
  }
}
</script>

在綁定多個相同的事件的時候,前兩種方法會產(chǎn)生覆蓋,而第三中方法則會同時執(zhí)行多個事件。

相關(guān)文章

  • JS簡單測試循環(huán)運行時間的方法

    JS簡單測試循環(huán)運行時間的方法

    這篇文章主要介紹了JS簡單測試循環(huán)運行時間的方法,涉及針對javascript中for循環(huán)、for...in循環(huán)及foreach循環(huán)的相關(guān)使用方法及運行時間測試,需要的朋友可以參考下
    2016-09-09
  • 用JavaScript操作WinRar

    用JavaScript操作WinRar

    Blog的插入HTML功能有誤。 原來在blueidea.com上看到了用ASP執(zhí)行解壓縮動作的文章,一直沒有去用心看,前日,趁老大不在,爽了一把,把它改成了用JavaScript操作的了。
    2008-04-04
  • 原生JS封裝_new函數(shù)實現(xiàn)new關(guān)鍵字的功能

    原生JS封裝_new函數(shù)實現(xiàn)new關(guān)鍵字的功能

    這篇文章主要介紹了原生JS封裝_new函數(shù),實現(xiàn)new關(guān)鍵字的功能 ,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-08-08
  • echarts報錯:Error?in?mounted?hook的解決方法

    echarts報錯:Error?in?mounted?hook的解決方法

    最近又遇到了寫echarts的時候常遇到的一個錯誤,這篇文章主要給大家介紹了關(guān)于echarts報錯:Error?in?mounted?hook:?“TypeError:?Cannot?read?properties?of?undefined?(reading?‘init‘)“的解決方法,需要的朋友可以參考下
    2022-07-07
  • Vue自定義日歷小控件使用方法詳解

    Vue自定義日歷小控件使用方法詳解

    這篇文章主要為大家詳細介紹了Vue自定義日歷小控件使用方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • 微信小程序?qū)崿F(xiàn)tab點擊切換

    微信小程序?qū)崿F(xiàn)tab點擊切換

    這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)tab點擊切換,不滑動,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • JS中傳遞參數(shù)的幾種不同方法比較

    JS中傳遞參數(shù)的幾種不同方法比較

    本篇文章主要介紹了JS中傳遞參數(shù)的幾種不同方法。具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • 原生JavaScript實現(xiàn)購物車效果

    原生JavaScript實現(xiàn)購物車效果

    這篇文章主要為大家詳細介紹了原生JavaScript實現(xiàn)購物車效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • Javascript遍歷Html Table示例(包括內(nèi)容和屬性值)

    Javascript遍歷Html Table示例(包括內(nèi)容和屬性值)

    這篇文章主要介紹了Javascript如何遍歷Html Table(包括內(nèi)容和屬性值),需要的朋友可以參考下
    2014-07-07
  • javascript基本常用排序算法解析

    javascript基本常用排序算法解析

    這篇文章主要為大家詳細介紹了javascript基本常用排序算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09

最新評論