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

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

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

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

首先來認(rèn)識一下什么叫事件,請看下邊的代碼:

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

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

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

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

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

或者:

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

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

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

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

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

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

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

PS: 以上內(nèi)容皆為本人所知,如有不當(dāng)之處歡迎指正,不用給俺面子,文章內(nèi)容嚴(yán)謹(jǐn)才不會誤導(dǎo)讀者嘛。。同時也呼吁有能力的網(wǎng)友也加入到原創(chuàng)計劃中來。感謝此文的讀者以及支持無憂腳本原創(chuàng)計劃的網(wǎng)友。
再補(bǔ)充一個 IE 專有的事件驅(qū)動方法 Named Script
  雖然不太建議這么寫,不過做為一個介紹還是有必要的,如果在只考慮 IE 用戶的情況下,此方法還是有一定的便利性的。
Named Script 通過 <script> 標(biāo)簽來定義對象事件。
語法:
<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)簽無異,就不過多介紹了,主要說的是 event 和 for 這兩個屬性。event 屬性表示了腳本在什么事件觸發(fā)執(zhí)行,for 屬性表示事件觸發(fā)的對象,就以紅亭的例子讓我們來看試一下:

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

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

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

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

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

相關(guān)文章

  • JavaScript switch case 的用法實例[范圍]

    JavaScript switch case 的用法實例[范圍]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評論

安化县| 澄迈县| 双柏县| 定远县| 嘉祥县| 应城市| 武陟县| 巴东县| 卢氏县| 阜阳市| 饶河县| 宁河县| 冀州市| 山丹县| 盈江县| 岑溪市| 顺昌县| 曲沃县| 蒲城县| 开远市| 辰溪县| 南岸区| 翁源县| 和林格尔县| 安乡县| 阿城市| 资中县| 泗洪县| 华宁县| 杨浦区| 龙里县| 南昌市| 黄平县| 襄垣县| 修水县| 波密县| 苍梧县| 民勤县| 巴林右旗| 高要市| 裕民县|