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

JScript|Event]面向事件驅(qū)動的編程(二)--實例講解:將span模擬成超連接

 更新時間:2007年01月11日 00:00:00   作者:  
作者:泣紅亭 
在上一篇文章《面向事件驅(qū)動的編程》中我講了三種將事件綁定到元素的方法,而推薦使用第三種方法,即使用attachEvent/addEventListener來綁定.上一篇文章的主旨是告訴大家如何使用事件,而這一篇文章的主旨是讓大家弄懂如何靈活應(yīng)用事件來批處理某一類的對象行為.

首先講一講事件傳遞的概念.什么是事件傳遞?舉個現(xiàn)實的例子,有個人捏了一下你的手指,你可能會說他捏了你手指,也可能會說他捏了你的手,甚至可能會說他捏了你.事實上三種說法都沒錯,在瀏覽器事件的執(zhí)行中亦有相似的情況,請看下邊的例子:

[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]

上邊的例子給Input[type=button]、td、tr、tbody、table、body、html、document、window都設(shè)置了onclick事件處理函數(shù),都是顯示當(dāng)前對象的id值,點擊之后IE會依次出現(xiàn)ButtonElement、TDElement、TRElement、TBODYElement、bodyObject、HTMLElement、documentObj,而Firefox則有一點不同,它顯示完documentObj之后還會顯示windowObj,而IE卻不會,這是因為IE的window對象沒有onclick事件。從這里可以看出這些對象都受到了點擊,執(zhí)行了onclick事件函數(shù),而且順序是從事件來源對象一直往上傳直到window對象,這就是瀏覽器的事件傳遞。

如何對一類元素的事件進(jìn)行處理,這是本文的重點,而重點知識又在于事件的傳遞。從上邊的例子可以看出,不管是哪里的對象引發(fā)了一個事件,最后都會往上傳遞,我們要做的是在事件的必經(jīng)之路上處理它,建議使用window.document。再看一個例子:

[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]

上邊的例子給window.document綁定了一個點擊事件處理函數(shù)Links_Onclick,在里邊我獲取了事件來源對象,并且顯示它的innerHTML值,可以看出不管在IE還是在Firefox,點擊無憂腳本論壇1的時候會顯示"無憂腳本論壇1",點擊無憂腳本論壇2的時候會無憂腳本論壇2,這下明白為什么我要大費(fèi)周章講事件傳遞了吧?我們正是要利用這一點,實現(xiàn)文章標(biāo)題所說的:將span元素模擬成連接元素。

分析一下連接元素的一般特點:

1、有下劃線
2、鼠標(biāo)移動上去會變成手型鼠標(biāo)
3、點擊之后會進(jìn)入某一個頁面(href屬性)
4、可以設(shè)置目標(biāo)窗口的名稱(target屬性)

接下來一步一步實現(xiàn)上邊所舉的特點,首先是下劃線和鼠標(biāo)移動上去會變成手型鼠標(biāo),這個很簡單,用CSS即可,可以與腳本無關(guān),請看示例:

[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]

接下來是實現(xiàn)“點擊之后會進(jìn)入某一個頁面”,可以給span元素增加一個屬性href保存url,同時處理它的onclick事件,這就要用到剛才我說了半天的事件傳遞,思路是給window.document對象綁定一個onclick處理函數(shù),如果事件來源對象的標(biāo)簽名(tagName)是span,它的class屬性值為link,并且它擁有一個非空href屬性,就調(diào)用window.open打開href屬性所保存的url。

[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]

點擊上邊示例代碼所模擬出來的“連接”之后,瀏覽器會連接到無憂腳本論壇(http://www.51js.com),第三個特點也實現(xiàn)了。在這里特別說明一下:Firefox不支持直接使用src.href獲取我們自定義的href屬性,因此使用了IE和Firefox都支持的getAttribute(attributeName)方法,如果不存在則返回null。

最后的工作是增加target屬性實現(xiàn)設(shè)置目標(biāo)窗口的功能,要注意一點就是target屬性是可有可無的,實現(xiàn)方法很簡單,利用上邊的實例就可以輕松實現(xiàn),就是在window.open那里做一點點手腳,請看示例代碼:

[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]

搞定!我們已經(jīng)初步將擁有特定屬性的span元素模擬成了超連接元素,當(dāng)然這里邊還大有文章可做,但這并不是重點,而且將span元素模擬成超連接并沒有什么實用價值,畢竟已經(jīng)有那么好用的A元素可以供我們使用,所以要弄明白一點:搞清楚事件的傳遞,并且利用它為我們做一些本來很麻煩的工作,這才是本文的重點。

好了,又要告一段落了,下一篇文章的主題還沒定,估計是再來一個實例或者另開一個主題,敬請期待。

歡迎有興趣的同志支持一下無憂腳本論壇的原創(chuàng)行動,一起將您的原創(chuàng)文章貼出來與網(wǎng)友分享,還記得一篇文章里說過這樣的話:那些曾經(jīng)幫助我們的人們,他們沒有想過要得到回報,如果硬要說有,那也是希望你能夠像他們那樣幫助需要幫助的人。

相關(guān)文章

  • JavaScript 32位整型無符號操作示例

    JavaScript 32位整型無符號操作示例

    所有整數(shù)字變量默認(rèn)都是有符號整數(shù),JavaScript 進(jìn)行位操作時,是采用32位有符號整型,這意味著其轉(zhuǎn)換的結(jié)果也是32位有符號整型
    2013-12-12
  • 詳解package.json版本號規(guī)則

    詳解package.json版本號規(guī)則

    這篇文章主要介紹了詳解package.json版本號規(guī)則,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • js創(chuàng)建表單元素并使用submit進(jìn)行提交

    js創(chuàng)建表單元素并使用submit進(jìn)行提交

    這篇文章主要介紹了js創(chuàng)建表單元素并使用submit進(jìn)行提交,需要的朋友可以參考下
    2014-08-08
  • JavaScript中定義類的方式詳解

    JavaScript中定義類的方式詳解

    這篇文章主要介紹了JavaScript中定義類的方式,結(jié)合實例形式分析了JavaScript實現(xiàn)面向?qū)ο箢惖亩x及使用相關(guān)技巧,并附帶了四種JavaScript類的定義方式,需要的朋友可以參考下
    2016-01-01
  • javascript中for...of和for..in循環(huán)的區(qū)別

    javascript中for...of和for..in循環(huán)的區(qū)別

    JS中循環(huán)語句眾多,你是否也有用的時候突然不知道用哪個的經(jīng)歷,本文主要介紹了javascript中for...of和for..in循環(huán)的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • electron中使用bootstrap的示例代碼

    electron中使用bootstrap的示例代碼

    這篇文章主要介紹了electron中使用bootstrap的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • 談一談js中的執(zhí)行環(huán)境及作用域

    談一談js中的執(zhí)行環(huán)境及作用域

    這篇文章主要和大家一起談一談js中的執(zhí)行環(huán)境及作用域,本文依據(jù)面試過程中遇到的問題進(jìn)行探討,感興趣的小伙伴們可以參考一下
    2016-03-03
  • JavaScript內(nèi)置對象之Array的使用小結(jié)

    JavaScript內(nèi)置對象之Array的使用小結(jié)

    這篇文章主要介紹了JavaScript內(nèi)置對象之Array的使用小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • echarts X軸顯示不全的處理方法(顯示完全以及換行)

    echarts X軸顯示不全的處理方法(顯示完全以及換行)

    我們在echarts表中經(jīng)常會出現(xiàn)X軸的信息顯示不完全的情況,所以本文小編給大家介紹了echarts X軸顯示不全的處理方法,文中通過代碼示例給大家介紹的非常詳細(xì),具有一定的參考價值,需要的朋友可以參考下
    2024-01-01
  • JavaScript實現(xiàn)橫向滑出的多級菜單效果

    JavaScript實現(xiàn)橫向滑出的多級菜單效果

    這篇文章主要介紹了JavaScript實現(xiàn)橫向滑出的多級菜單效果,涉及JavaScript數(shù)學(xué)運(yùn)算及頁面元素樣式動態(tài)變換的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10

最新評論