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

JScript面向事件驅(qū)動(dòng)的編程

 更新時(shí)間:2007年01月11日 00:00:00   作者:  
世間萬(wàn)物,千變?nèi)f化,面向?qū)ο蟮木幊桃嗍菍?duì)現(xiàn)實(shí)社會(huì)的模擬,而JavaScript是一種基于對(duì)象并且很接近面向?qū)ο缶幊痰木幊陶Z(yǔ)言,而我們web設(shè)計(jì)師/程序員跟JavaScript打交道亦要直面JavaScript才能夠把網(wǎng)頁(yè)寫得更加豐富多彩.在此先搞清楚一點(diǎn)就是:JavaScript并不僅僅用在Web上,它可以用在許多領(lǐng)域,當(dāng)然我這里討論的更多的是JavaScript在Web上的應(yīng)用,并且主要是事件方面的應(yīng)用.

JavaScript并不能直接對(duì)Web對(duì)象進(jìn)行操作,而是要通過(guò)瀏覽器提供的Document Object Modle(即常聽說(shuō)的DOM,文檔模型對(duì)象)來(lái)操作對(duì)象.HTML是一個(gè)樹文檔,它以HTML標(biāo)簽為根,其它的元素都是在HTML標(biāo)簽之內(nèi),一級(jí)一級(jí)地延伸下去.而DOM中,則以window為根對(duì)象,其它的對(duì)象則為它的子對(duì)象或者它的子對(duì)象的子對(duì)象.

首先來(lái)認(rèn)識(shí)一下什么叫事件,請(qǐng)看下邊的代碼:

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

很簡(jiǎn)單的一個(gè)實(shí)例,頁(yè)面只有一個(gè)按鈕,它的value值為"這是一個(gè)按鈕",并且我們給它指定了onclick屬性,它的值為一行JavaScript代碼,使用了window對(duì)象的alert方法,將this.value的內(nèi)容顯示在警告窗體中.這里的this是啥呢?this就是當(dāng)前操作的對(duì)象,即該input對(duì)象.這份代碼告訴瀏覽器:"當(dāng)前對(duì)象受點(diǎn)擊"的時(shí)候要調(diào)用window.alert(this.value)這行代碼,因此瀏覽器在按鈕受點(diǎn)擊的時(shí)候就執(zhí)行了相關(guān)的操作.一個(gè)對(duì)象可以有許多事件,比如說(shuō)單擊(click),雙擊(dbclick),鼠標(biāo)移到上邊(mouseover),鼠標(biāo)移開(mouseout)等等,這些事件經(jīng)常在各種流傳的代碼中可以看到.那如何給一個(gè)對(duì)象設(shè)置事件發(fā)生時(shí)執(zhí)行的代碼呢?一般來(lái)說(shuō)有以下三種方式:

第一種:直接設(shè)置HTML元素的事件屬性,名稱一般是on+事件名稱,比如說(shuō)單擊事件即為onclick,實(shí)例請(qǐng)見(jiàn)上邊的代碼

第二種:在script中對(duì)HTML對(duì)象設(shè)置事件屬性,名稱一般也是on+事件名稱,比如說(shuō)obj.onclick = 函數(shù),請(qǐng)見(jiàn)實(shí)例代碼:

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

或者:

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

這第二種方式有兩種方法來(lái)指定執(zhí)行的代碼,但本質(zhì)上是一樣的,同樣是指定一個(gè)函數(shù)給對(duì)象,要求對(duì)象當(dāng)某事件發(fā)生的時(shí)候執(zhí)行該函數(shù).
第三種方式: 使用obj.attachEvent(IE瀏覽器)/obj.addEventListener方法來(lái)指定,建議使用此方法:

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

為什么建議第三種方式呢?上邊所列的第一種方式很明顯只是設(shè)置一下元素屬性,只可能指定一次,而第二種方式與第三種方式的差別可以從下邊的實(shí)例中看出來(lái):

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

上邊的示例使用了兩個(gè)按鈕,并且使用了第二種方式與第三種方式先后指定了兩個(gè)函數(shù)給click事件,點(diǎn)擊第一個(gè)按鈕可以看到彈出了"指定的第二個(gè)函數(shù)",說(shuō)明只有MyButton_Onclick1_2函數(shù)生效,而先前指定的MyButton_Onclick1_1被MyButton_Onclick1_2代替了。點(diǎn)擊第二個(gè)按鈕可以看到彈出了兩個(gè)窗體,顯示的內(nèi)容分別是"指定的第一個(gè)函數(shù)"和"指定的第二個(gè)函數(shù)",很明顯,使用attachEvent/addEventListener可以即增加要執(zhí)行的程序并且還能夠保留原有的程序,在IE中,它們是根據(jù)增加的順序倒序執(zhí)行,即先執(zhí)行后添加的MyButton_Onclick2_2,然后再執(zhí)行MyButton_Onclick2_1,而Firefox中則是相反,先執(zhí)行MyButton_Onclick2_1然后再執(zhí)行MyButton_Onclick2_2。。沒(méi)辦法,IE和Firefox是冤家,對(duì)著干。。呵呵

好了,俺還有項(xiàng)目要趕,只好先寫到這里,最近比較忙,呵呵。下篇文章計(jì)劃將利用本文的內(nèi)容寫一點(diǎn)應(yīng)用,內(nèi)容為:使用DHTML將span元素模擬成A元素,它亦是本文的后續(xù)文章,但不僅僅是關(guān)于事件了,還會(huì)配合CSS。

PS: 以上內(nèi)容皆為本人所知,如有不當(dāng)之處歡迎指正,不用給俺面子,文章內(nèi)容嚴(yán)謹(jǐn)才不會(huì)誤導(dǎo)讀者嘛。。同時(shí)也呼吁有能力的網(wǎng)友也加入到原創(chuàng)計(jì)劃中來(lái)。感謝此文的讀者以及支持無(wú)憂腳本原創(chuàng)計(jì)劃的網(wǎng)友。
再補(bǔ)充一個(gè) IE 專有的事件驅(qū)動(dòng)方法 Named Script
  雖然不太建議這么寫,不過(guò)做為一個(gè)介紹還是有必要的,如果在只考慮 IE 用戶的情況下,此方法還是有一定的便利性的。
Named Script 通過(guò) <script> 標(biāo)簽來(lái)定義對(duì)象事件。
語(yǔ)法:
<SCRIPT
    CLASS=classname
    DEFER
    EVENT=eventname
    FOR=element
    ID=value
    LANGUAGE=JAVASCRIPT | JSCRIPT | VBSCRIPT  | VBS | XML
    SRC=url
    TITLE=text
    TYPE=MIME-type
>

  其它屬性與我們通常使用的 <script> 標(biāo)簽無(wú)異,就不過(guò)多介紹了,主要說(shuō)的是 event 和 for 這兩個(gè)屬性。event 屬性表示了腳本在什么事件觸發(fā)執(zhí)行,for 屬性表示事件觸發(fā)的對(duì)象,就以紅亭的例子讓我們來(lái)看試一下:

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

大家應(yīng)該看到了,效果和其它的方法是一樣的,也許有人會(huì)說(shuō)既然一樣而且兼容性又不好,為什么還要這么用呢?請(qǐng)看下面的例子:

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

這個(gè)例子有多個(gè)相同的 name 的對(duì)象,(注意:是 name 而不是 id,在 DOM 標(biāo)準(zhǔn)中 id 應(yīng)該是唯一的,雖然在 IE 中可以有多個(gè)相同 id 的對(duì)象,不過(guò)不建議大家這么做。)只用一句 Named Script 就可以對(duì)這些對(duì)象完成事件驅(qū)動(dòng),從代碼上來(lái)說(shuō)簡(jiǎn)便了不少,及至以后的修改也變的非常方便,這也是 Named Script 的最大優(yōu)點(diǎn)。

  應(yīng)用最多的地方會(huì)在表單的 Radio 或者 Checkbox 對(duì)象上,因?yàn)樗鼈円话愣紩?huì)有相同的 name,而同時(shí)也會(huì)有相同的事件驅(qū)動(dòng),具體的應(yīng)用范圍很廣,可以在無(wú)憂腳本 http://www.51j.com/ 里搜索到大量的應(yīng)用實(shí)例,在此僅做一些簡(jiǎn)單的介紹,就不過(guò)多的舉例了?! ?STRONG>最后再次重申一下,此方法僅為 IE 特有,其它其它瀏覽器不支持。
判斷window.document.all是否為null是判斷當(dāng)前瀏覽器是IE還是Firefox最簡(jiǎn)單的方法,因?yàn)镮E有這個(gè)對(duì)象,而firefox沒(méi)有。

相關(guān)文章

  • JavaScript switch case 的用法實(shí)例[范圍]

    JavaScript switch case 的用法實(shí)例[范圍]

    JavaScript switch case 的用法實(shí)例,大家可以參考下。
    2009-09-09
  • 分享bootstrap學(xué)習(xí)筆記心得(組件及其屬性)

    分享bootstrap學(xué)習(xí)筆記心得(組件及其屬性)

    Bootstrap是一種web框架,是基于HTML,CSS和JS的一種目前較為流行的前端框架。本篇文章將總結(jié)常用組件及其屬性,需要的朋友參考下吧
    2017-01-01
  • js中symbol類型以及symbol的三大應(yīng)用場(chǎng)景詳解

    js中symbol類型以及symbol的三大應(yīng)用場(chǎng)景詳解

    Symbol是ES6新推出的一種基本類型,它表示獨(dú)一無(wú)二的值,它可以接受一個(gè)字符串作為參數(shù),帶有相同參數(shù)的兩個(gè)Symbol值不相等,這個(gè)參數(shù)只是表示Symbol值的描述而已,下面這篇文章主要給大家介紹了關(guān)于js中symbol類型以及symbol的三大應(yīng)用場(chǎng)景,需要的朋友可以參考下
    2022-09-09
  • JS實(shí)現(xiàn)隔行換色的表格排序

    JS實(shí)現(xiàn)隔行換色的表格排序

    本篇文章主要介紹了JS實(shí)現(xiàn)隔行換色的表格排序的相關(guān)知識(shí)。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-03-03
  • JavaScript 空間坐標(biāo)的使用

    JavaScript 空間坐標(biāo)的使用

    這篇文章主要介紹了JavaScript 空間坐標(biāo)的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • js帶按鈕的提示框可供選擇示例代碼

    js帶按鈕的提示框可供選擇示例代碼

    本文為大家介紹下使用js實(shí)現(xiàn)可以供選擇的彈出框,具體的實(shí)現(xiàn)如下,感性的朋友可以參考下,希望對(duì)大家學(xué)習(xí)有所幫助
    2013-09-09
  • JS構(gòu)造函數(shù)與原型prototype的區(qū)別介紹

    JS構(gòu)造函數(shù)與原型prototype的區(qū)別介紹

    下面小編就為大家?guī)?lái)一篇JS構(gòu)造函數(shù)與原型prototype的區(qū)別介紹。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-07-07
  • Three.js基礎(chǔ)部分學(xué)習(xí)

    Three.js基礎(chǔ)部分學(xué)習(xí)

    本文主要分享了一個(gè)案例,介紹了使用Three.js繪制旋轉(zhuǎn)立方體的方法與實(shí)現(xiàn)過(guò)程。具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-01-01
  • Javascript仿PHP $_GET獲取URL中的參數(shù)

    Javascript仿PHP $_GET獲取URL中的參數(shù)

    這篇文章主要介紹了Javascript仿PHP $_GET獲取URL中的參數(shù)代碼實(shí)例,需要的朋友可以參考下
    2014-05-05
  • JavaScript塊級(jí)作用域綁定以及狀態(tài)提升詳解

    JavaScript塊級(jí)作用域綁定以及狀態(tài)提升詳解

    這篇文章主要給大家介紹了關(guān)于JavaScript塊級(jí)作用域綁定以及狀態(tài)提升的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-03-03

最新評(píng)論

嵊泗县| 伊川县| 昭平县| 南和县| 辰溪县| 同仁县| 九寨沟县| 广宁县| 花莲市| 洛阳市| 三都| 浮山县| 林口县| 从化市| 永福县| 汝城县| 淮阳县| 广水市| 新蔡县| 岱山县| 正蓝旗| 台中市| 翁牛特旗| 阿城市| 赤城县| 五家渠市| 阿图什市| 镇安县| 嘉禾县| 佳木斯市| 邵武市| 北京市| 望谟县| 南岸区| 彰武县| 林芝县| 阳山县| 浙江省| 前郭尔| 南平市| 巩留县|