精品秘无码一区二区三区老师-精品秘一区二三区免费雷安-精品蜜桃秘一区二区三区-精品蜜桃秘一区二区三区粉嫩-精品蜜桃一区二区三区-精品蜜臀国产aⅴ一区二区三区

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

prototype.js 1.4版開發(fā)者手冊

admin
2010年7月3日 14:57 本文熱度 6941
prototype.js是什么? [p]萬一你沒有使用過大名鼎鼎的prototype.js,那么讓我來告訴你,[url=http://prototype.conio.net/]prototype.js[/url]是由[url=http://conio.net/]sam stephenson[/url]寫的一個(gè)javascript類庫。這個(gè)構(gòu)思奇妙,而且兼容標(biāo)準(zhǔn)的類庫,能幫助你輕松建立有高度互動(dòng)的web2.0特性的富客戶端頁面。[/p] [p]如果你最近嘗試使用它,你大概了解到文檔并不是作者的一個(gè)強(qiáng)項(xiàng)。和在我以前使用這個(gè)類庫的不少開發(fā)者一樣,一開始,我不得不一頭扎進(jìn)閱讀prototype.js的源代碼和實(shí)驗(yàn)它的功能中。我想,在我學(xué)習(xí)完它之后,把我學(xué)到的東西分享給大家是件不錯(cuò)的事。[/p] [p]同時(shí),在本文中,我也將提供一個(gè)關(guān)于這個(gè)類庫提供的objects,classes,functions,extensions這對東東的[url=http://cnblogs.com/thinhunan/archive/2006/04/01/364404.html#reference]非官方參考[/url][/p] [p]在閱讀這個(gè)文檔時(shí),熟悉ruby的開發(fā)者將會(huì)注意到ruby的一些內(nèi)建類和本類庫擴(kuò)展實(shí)現(xiàn)之間非常相似。[/p] 相關(guān)文章 [p]advanced [url=http://sergiopereira.com/articles/advjs.html]javascript guide[/url].[/p] 一些實(shí)用的函數(shù) [p]這個(gè)類庫帶有很多預(yù)定義的對象和實(shí)用函數(shù),這些東東的目的顯然是把你從一些重復(fù)的打字中解放出來 。[/p] 使用$()方法 [p]$() 方法是在dom中使用過于頻繁的 document.getelementbyid() 方法的一個(gè)便利的簡寫,就像這個(gè)dom方法一樣,這個(gè)方法返回參數(shù)傳入的id的那個(gè)元素。[/p] [p]比起dom中的方法,這個(gè)更勝一籌。你可以傳入多個(gè)id作為參數(shù)然后 $() 返回一個(gè)帶有所有要求的元素的一個(gè) array 對象。[/p][br] [br] test page [br] [br] [br] [br] [br]
[br]

this is a paragraph

[br]
[br]
[br]

this is another paragraph

[br]
[br]
[br]
[br] [br] [p]另外一個(gè)好處是,這個(gè)函數(shù)能傳入用string表示的對象id,也可以傳入對象本身,這樣,在建立其它能傳兩種類型的參數(shù)的函數(shù)時(shí)非常有用。[/p] 使用$f()函數(shù) [p]$f()函數(shù)是另一個(gè)大收歡迎的“快捷鍵”,它能用于返回任何表單輸入控件的值,比如text box,drop-down list。這個(gè)方法也能用元素id或元素本身做為參數(shù)。[/p][br]
[br]
使用$a()函數(shù) [p]$a()函數(shù)能把它接收到的單個(gè)的參數(shù)轉(zhuǎn)換成一個(gè)array對象。[/p] [p]這個(gè)方法,結(jié)合被本類庫擴(kuò)展了的array類,能方便的把任何的可枚舉列表轉(zhuǎn)換成或拷貝到一個(gè)array對象。一個(gè)推薦的用法就是把dom node lists轉(zhuǎn)換成一個(gè)普通的array對象,從而更有效率的進(jìn)行遍歷,請看下面的例子。[/p][br] [br] [p][/p] 使用 $h() 函數(shù) [p]$h()函數(shù)把一些對象轉(zhuǎn)換成一個(gè)可枚舉的和聯(lián)合數(shù)組類似的hash對象。[/p] [p][/p] 使用$r()函數(shù) [p]$r()是new objectrange(lowbound,upperbound,excludebounds)的縮寫。[/p] [p]跳到[url=http://cnblogs.com/thinhunan/archive/2006/04/01/364404.html#reference.objectrange]objectrange[/url] 類文檔可以看到一個(gè)關(guān)于此類的完整描述. 此時(shí),我們還是先來看一個(gè)例子以展示這個(gè)縮寫能代替哪些方法吧。其它相關(guān)的一些知識(shí)可以在[url=http://cnblogs.com/thinhunan/archive/2006/04/01/364404.html#reference.enumerable]enumerable[/url] 對象文檔中找到。[/p][br] [p][/p] 使用try.these()函數(shù) try.these() 方法使得實(shí)現(xiàn)當(dāng)你想調(diào)用不同的方法直到其中的一個(gè)成功正常的這種需求變得非常容易, 他把一系列的方法作為參數(shù)并且按順序的一個(gè)一個(gè)的執(zhí)行這些方法直到其中的一個(gè)成功執(zhí)行,返回成功執(zhí)行的那個(gè)方法的返回值。 在下面的例子中, xmlnode.text在一些瀏覽器中好用,但是xmlnode.textcontent在另一些瀏覽器中正常工作。 使用try.these()方法我們可以得到正常工作的那個(gè)方法的返回值。 [p][br] [/p] [p][/p] ajax對象 [p]上面提到的共通方法非常好,但是面對它吧,它們不是最高級(jí)的那類東西。它們是嗎?你很可能自己編寫了這些甚至在你的腳本里面有類似功能的方法。但是這些方法只是冰山一角。[/p] [p]我很肯定你對prototype.js感興趣的原因很可能是由于它的ajax能力。所以讓我們解釋當(dāng)你需要完成ajax邏輯的時(shí)候,這個(gè)包如何讓它更容易。[/p] ajax 對象是一個(gè)預(yù)定義對象,由這個(gè)包創(chuàng)建,為了封裝和簡化編寫[url=http://en.wikipedia.org/wiki/ajax_%28programming%29]ajax[/url] 功能涉及的狡猾的代碼。 這個(gè)對象包含一系列的封裝ajax邏輯的類。我們來看看其中幾個(gè)類。 使用ajax.request類 如果你不使用任何的幫助程序包,你很可能編寫了整個(gè)大量的代碼來創(chuàng)建xmlhttprequest對象并且異步的跟蹤它的進(jìn)程, 然后解析出響應(yīng) 然后處理它。當(dāng)你不需要支持多于一種類型的瀏覽器時(shí)你會(huì)感到非常的幸運(yùn)。 為了支持 ajax 功能。這個(gè)包定義了 ajax.request 類。 [p]假如你有一個(gè)應(yīng)用程序可以通過url [i]http://yoursever/app/get_sales?empid=1234&year=1998[/i]與服務(wù)器通信。它返回下面這樣的xml 響應(yīng)。[/p][br] [br] [br] [br] [br] 1234[br] 1998-01[br] $8,115.36[br] [br] [br] 1234[br] 1998-02[br] $11,147.51[br] [br] [br] [br] 用 ajax.request對象和服務(wù)器通信并且得到這段xml是非常簡單的。下面的例子演示了它是如何完成的。
你注意到傳入 ajax.request構(gòu)造方法的第二個(gè)對象了嗎? 參數(shù){method: 'get', parameters: pars, oncomplete: showresponse} 表示一個(gè)匿名對象的真實(shí)寫法。他表示你傳入的這個(gè)對象有一個(gè)名為 method 值為 'get'的屬性,另一個(gè)屬性名為 parameters 包含http請求的查詢字符串,和一個(gè)oncomplete 屬性/方法包含函數(shù)showresponse。 還有一些其它的屬性可以在這個(gè)對象里面定義和設(shè)置,如 asynchronous,可以為true 或 false 來決定ajax對服務(wù)器的調(diào)用是否是異步的(默認(rèn)值是 true)。 這個(gè)參數(shù)定義ajax調(diào)用的選項(xiàng)。在我們的例子中,在第一個(gè)參數(shù)通過http get命令請求那個(gè)url,傳入了變量 pars包含的查詢字符串, ajax.request 對象在它完成接收響應(yīng)的時(shí)候?qū)⒄{(diào)用showresponse 方法。 也許你知道, xmlhttprequest在http請求期間將報(bào)告進(jìn)度情況。這個(gè)進(jìn)度被描述為四個(gè)不同階段:[i]loading[/i], [i]loaded[/i], [i]interactive[/i], 或 [i]complete[/i]。你可以使 ajax.request 對象在任何階段調(diào)用自定義方法 ,[i]complete[/i] 是最常用的一個(gè)。想調(diào)用自定義的方法只需要簡單的在請求的選項(xiàng)參數(shù)中的名為 onxxxxx 屬性/方法中提供自定義的方法對象。 就像我們例子中的 oncomplete 。你傳入的方法將會(huì)被用一個(gè)參數(shù)調(diào)用,這個(gè)參數(shù)是 xmlhttprequest 對象自己。你將會(huì)用這個(gè)對象去得到返回的數(shù)據(jù)并且或許檢查包含有在這次調(diào)用中的http結(jié)果代碼的 status 屬性。 還有另外兩個(gè)有用的選項(xiàng)用來處理結(jié)果。我們可以在onsuccess 選項(xiàng)處傳入一個(gè)方法,當(dāng)ajax無誤的執(zhí)行完后調(diào)用, 相反的,也可以在onfailure選項(xiàng)處傳入一個(gè)方法,當(dāng)服務(wù)器端出現(xiàn)錯(cuò)誤時(shí)調(diào)用。正如onxxxxx 選項(xiàng)傳入的方法一樣,這兩個(gè)在被調(diào)用的時(shí)候也傳入一個(gè)帶有ajax請求的xmlhttprequest對象。 [p]我們的例子沒有用任何有趣的方式處理這個(gè) xml響應(yīng), 我們只是把這段xml放進(jìn)了一個(gè)文本域里面。對這個(gè)響應(yīng)的一個(gè)典型的應(yīng)用很可能就是找到其中的想要的信息,然后更新頁面中的某些元素, 或者甚至可能做某些xslt轉(zhuǎn)換而在頁面中產(chǎn)生一些html。[/p] [p]在1.4.0版本中,一種新的事件回傳外理被引入。如果你有一段代碼總是要為一個(gè)特殊的事件執(zhí)行,而不管是哪個(gè)ajax調(diào)用引發(fā)它,那么你可以使用新的[url=http://cnblogs.com/thinhunan/archive/2006/04/01/364404.html#ajax.responders]ajax.responders[/url]對象。[/p] [p]假設(shè)你想要在一個(gè)ajax調(diào)用正在運(yùn)行時(shí),顯示一些提示效果,像一個(gè)不斷轉(zhuǎn)動(dòng)的圖標(biāo)之類的,你可以使用兩個(gè)全局事件handler來做到,其中一個(gè)在第一個(gè)調(diào)用開始時(shí)顯示圖標(biāo),另一個(gè)在最后一個(gè)調(diào)用完成時(shí)隱藏圖標(biāo)。看下面的例子。[/p]
loading...
[p]更完全的解釋,請參照 [url=http://cnblogs.com/thinhunan/archive/2006/04/01/364404.html#ajax_request_reference]ajax.request 參考[/url] 和 [url=http://cnblogs.com/thinhunan/archive/2006/04/01/364404.html#options_reference]ajax選項(xiàng)參考[/url]。[/p] [p][/p] 使用ajax.updater類 如果你的服務(wù)器的另一端返回的信息已經(jīng)是html了,那么使用這個(gè)程序包中 ajax.updater 類將使你的生活變得更加得容易。用它你只需提供哪一個(gè)元素需要被ajax請求返回的html填充就可以了,例子比我寫說明的更清楚。
你可以看到,這段代碼比前面的例子更加簡潔,不包括 oncomplete 方法,但是在構(gòu)造方法中傳入了一個(gè)元素id。 我們來稍稍修改一下代碼來描述如何在客戶端處理服務(wù)器段錯(cuò)誤成為可能。 我們將加入更多的選項(xiàng), 指定處理錯(cuò)誤的一個(gè)方法。這個(gè)是用 onfailure 選項(xiàng)來完成的。我們也指定了一個(gè) placeholder 只有在成功請求之后才會(huì)被填充。為了完成這個(gè)目的我們修改了第一個(gè)參數(shù)從一個(gè)簡單的元素id到一個(gè)帶有兩個(gè)屬性的對象, success (一切ok的時(shí)候被用到) 和 failure (有地方出問題的時(shí)候被用到) 在下面的例子中沒有用到failure屬性,而僅僅在 onfailure 處使用了 reporterror 方法。 [p]
如果你的服務(wù)器邏輯是連同html 標(biāo)記返回javascript 代碼, ajax.updater對象可以執(zhí)行那段javascript代碼。為了使這個(gè)對象對待響應(yīng)為javascript,你只需在最后參數(shù)的對象構(gòu)造方法中簡單加入evalscripts: true屬性。但是值得提醒的是,像這個(gè)選項(xiàng)名evalscripts暗示的,這些腳本會(huì)被執(zhí)行,但是它們不會(huì)被加入到page的腳本中。“有什么區(qū)別?”,可能你會(huì)這樣問。我們假定請求地址返回的東東像這樣:[br] [p]如果你以前這樣嘗試過,你知道這些腳本不會(huì)如你所期望的那樣工作,原因是這段腳本會(huì)被執(zhí)行,但像上面這樣的腳本執(zhí)行并不會(huì)創(chuàng)建一個(gè)名叫sayhi的函數(shù),它什么也不做。如果要?jiǎng)?chuàng)建一個(gè)函數(shù),我們應(yīng)當(dāng)把代碼改成下面這個(gè)樣子:[/p] [p]為什么我們在上面的代碼中不使用var關(guān)鍵字來聲明這個(gè)變量呢(指sayhi ),因?yàn)槟菢幼鰟?chuàng)建出來的函數(shù)將只是當(dāng)前腳本塊的一個(gè)局部變量(至少在ie中是這樣)。不寫var關(guān)鍵字,創(chuàng)建出來的對象的作用域就是我們所期望的window。[/p] [p]更多相關(guān)知識(shí),請參看 [url=http://cnblogs.com/thinhunan/archive/2006/04/01/364404.html#ajax.updater]ajax.updater reference[/url] 和[url=http://cnblogs.com/thinhunan/archive/2006/04/01/364404.html#ajax.options]options reference[/url].[/p] 枚舉... 噢!噢! [p]你知道,我們都是這樣來做循環(huán)的,建一個(gè)array,用elements組織它們,再建一個(gè)循環(huán)結(jié)構(gòu)(例如for,foreach,while)通過index數(shù)字來訪問每一個(gè)element,再用這個(gè)element做一些動(dòng)作。[/p] [p]當(dāng)你想到這時(shí),你會(huì)發(fā)現(xiàn)幾乎每次寫循環(huán)代碼你都會(huì)遲早用到一個(gè)array。那么,如果array對象能夠提供更多的功能給它們的迭代器使用不是很爽嗎?確實(shí)是這樣,事實(shí)上很多的編程語言都在它們的array或其它類似的結(jié)構(gòu)中(如collections,lists)提供一些這樣的功能。[/p] [p]現(xiàn)在好了,prototype.js了給我們一個(gè) [url=http://cnblogs.com/thinhunan/archive/2006/04/01/364404.html#reference.enumerable][color=#800080]enumerable[/color][/url]對象,它實(shí)現(xiàn)了很多和可迭代數(shù)據(jù)進(jìn)行交互的竅門。和原有的js對象相比prototype.js更上一層樓,它對[url=http://cnblogs.com/thinhunan/archive/2006/04/01/364404.html#reference.array][color=#800080]array 類s[/color][/url]擴(kuò)展了所有枚舉要用的函數(shù)。[/p] 循環(huán), ruby樣式的 [p]在標(biāo)準(zhǔn)的javascript中,如果你想把一個(gè)array中的所有elements顯示出來,你可以像下面代碼這樣寫得很好:[/p] [p]使用我們新的最好的朋友,prototype.js,我們可以把它生寫成這樣[/p]function showlist(){[br] var simpsons = ['homer', 'marge', 'lisa', 'bart', 'meg'];[br] simpsons.each( function(familymember){[br] alert(familymember);[br] }); } [p]你可能會(huì)想“非常奇怪的方式...相對舊的,這種語法太怪異了”。哦,在上面的例子,確實(shí)什么也沒有,在這個(gè)簡單得要死例子中,也沒有改變太多啊,盡管如此,請繼續(xù)讀下去。[/p] [p]在繼續(xù)下面內(nèi)容之前,你注意到那個(gè)被做為一個(gè)參數(shù)傳遞給each函數(shù)的函數(shù)?我們把它理解成迭代器函數(shù)。[/p] your arrays on steroids [p]就如我們上面提到的,把你的array中的elements當(dāng)成相同的類型使用相同的屬性和函數(shù)是很通用(common,不知該翻譯成通用還是庸俗)的。讓我們看看怎么樣利用我們新的馬力強(qiáng)勁的arrays的迭代功能吧。[/p] [p]依照標(biāo)準(zhǔn)找到一個(gè)element。[/p] [p][/p][br] [br] [p]現(xiàn)在我們再下一城,看看如何過濾一個(gè)array中的元素,從每個(gè)元素中得到我們想要的成員。[/p] [p][/p][br]

[br] this text has[br] a lot of[br] links. some are[br] external[br] and some are local[br]

[br] [p]上面的代碼僅僅是一點(diǎn)小小的實(shí)踐讓人愛上這種語法。請參看 [url=http://cnblogs.com/thinhunan/archive/2006/04/01/364404.html#reference.enumerable][color=#800080]enumerable[/color][/url]和[url=http://cnblogs.com/thinhunan/archive/2006/04/01/364404.html#reference.array][color=#800080]array[/color][/url]的所有函數(shù)[/p] [p][/p] [p][/p] prototype.js參考 [p][/p] javascript類擴(kuò)展 [p]prototype.js 類庫實(shí)現(xiàn)強(qiáng)大功能的一種途徑是擴(kuò)展已有的javascript 類。[/p] [p][/p] 對 [color=#000000]object的擴(kuò)展[/color] method kind arguments description extend(destination, source) static destination: any object, source: any object 提供一種通過拷貝所有源以象屬性和函數(shù)到目標(biāo)函數(shù)實(shí)現(xiàn)繼承的方法 inspect(targetobj) static targetobj: any object 返回可讀性好關(guān)于目標(biāo)對象的文字描述,如果對象實(shí)例沒有定義一個(gè)inspect函數(shù),默認(rèn)返回tostring函數(shù)的值。 [p][/p] [color=#000000]對number的擴(kuò)展[/color] method kind arguments description tocolorpart() instance (none) 返回?cái)?shù)字的十六進(jìn)制表示形式。在把一個(gè)rgb數(shù)字轉(zhuǎn)換成html表現(xiàn)形式時(shí)很有用。 succ() instance (none) 返回下一個(gè)數(shù)字,這個(gè)方法可用于迭代調(diào)用場景中。 times(iterator) instance iterator: a function object conforming to function(index) calls the [color=#000000]iterator function repeatedly passing the current index in the index argument. 反復(fù)調(diào)用iterator函數(shù)并傳遞當(dāng)前index到iterator的index參數(shù)。 [/color] [p]下面的例子用提示框顯示0-9。[/p][b

該文章在 2010/7/3 14:57:11 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 久久精品国产亚洲aⅴ麻豆甜 | 自拍亚洲综合图 | 欧美又大又黄又粗又长A片 欧美又大又色又爽AAAA片 | 无码av中文一区 | 中文字幕人妻偷伦在线视频 | 国产一卡在线观看完整版 | 成人亚洲一区二区三区在线 | 国产免费观看一区av | 亚洲a成人片在线播放 | 亚洲国产成人一区二 | 国产成人免费视频在线网站2 | 国产熟女一区视频在线播放 | 精品日产一卡2卡三卡4卡 | 久久精品国产亚洲avapp下载 | 麻豆91精品91久久久 | 精品偷拍被偷拍在线观看 | 亚洲日产韩国一二三四区 | 一级毛片成人免费看免费不卡 | 色情无码WWW视频无码 | 日韩欧美一区二区综合 | 久久久久国产一区二区 | a级高清毛片 | 国产精品女人高潮毛片 | 日本高清色倩视频在线观看 | 日韩大片免费看 | 天上人间av网 | 国产午夜精品理论片免费在线观看 | 国产毛片毛片精品天天看 | 亚洲h在线播放在线观看h | 性色AV性色生活片 | 亚洲国产一级片在线观看 | 国模吧无码一区二区三区 | 国产成人悠悠影院 | 十八禁无码免费网站 | 在线观看视频无码国产 | 亚偷熟乱区直播 | 亚洲中文字幕三级电影 | 日本无翼乌邪恶大全彩男男 | 国产日韩在线亚洲字幕中文 | 国产人成视频在线免费观看 | 亚洲欧美偷拍综合图区 |