国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

prototype1.5初體驗_prototype

來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 20:33:27
文檔

prototype1.5初體驗_prototype

prototype1.5初體驗_prototype:一直沒有沒有時間看prototype,現(xiàn)在好了,已經(jīng)更新到了1.5 pre1,呵呵,強大的功能不得不學(xué)習(xí)啊,這個是提升自己JS能力的又一個捷徑. 1. Prototype是什么 或許你還沒有用過它, prototype.js 是一個由Sam Stephenson寫的JavaScript包。這
推薦度:
導(dǎo)讀prototype1.5初體驗_prototype:一直沒有沒有時間看prototype,現(xiàn)在好了,已經(jīng)更新到了1.5 pre1,呵呵,強大的功能不得不學(xué)習(xí)啊,這個是提升自己JS能力的又一個捷徑. 1. Prototype是什么 或許你還沒有用過它, prototype.js 是一個由Sam Stephenson寫的JavaScript包。這

一直沒有沒有時間看prototype,現(xiàn)在好了,已經(jīng)更新到了1.5 pre1,呵呵,強大的功能不得不學(xué)習(xí)啊,這個是提升自己JS能力的又一個捷徑.

1. Prototype是什么?
或許你還沒有用過它, prototype.js 是一個由Sam Stephenson寫的JavaScript包。這個構(gòu)思奇妙編寫良好的一段兼容標(biāo)準(zhǔn)的一段代碼將承擔(dān)創(chuàng)造胖客戶端, 高交互性WEB應(yīng)用程序的重擔(dān)。輕松加入Web 2.0特性。

如果你最近體驗了這個程序包,你很可能會發(fā)現(xiàn)文檔并不是它的強項之一。像所有在我之前的開發(fā)者一樣,我只能一頭扎進prototype.js的源代碼中并且試驗其中的每一個部分。 我想當(dāng)我學(xué)習(xí)他的時候記寫筆記然后分享給其他人將會很不錯。

我也一起提供了這個包的對象,類,方法和擴展的 非官方參考 。

2. 通用性方法
這個程序包里面包含了許多預(yù)定義的對象和通用性方法。編寫這些方法的明顯的目的就是為了減少你大量的重復(fù)編碼和慣用法。

從Prototype1.5.x版本開始,你可以更方便的如下面代碼一樣操作DOM對象了:

var ele = $("myelement");
ele.hide(); //隱藏DOM對象對比從前的版本var ele = $("myelement");
Element.hide(ele); //隱藏DOM對象

這樣的改變有什么益處呢? 我覺得一來是更面向?qū)ο罅耍砭褪潜阌趯鞩DE里的代碼提示。
2.1. 使用 $()方法
$() 方法是在DOM中使用過于頻繁的 document.getElementById() 方法的一個便利的簡寫,就像這個DOM方法一樣,這個方法返回參數(shù)傳入的id的那個元素。

比起DOM中的方法,這個更勝一籌。你可以傳入多個id作為參數(shù)然后 $() 返回一個帶有所有要求的元素的一個 Array 對象。下面的例子會向你描述這些。

<HTML>
<HEAD>
<TITLE> Test Page </TITLE>
<script src="prototype-1.3.1.js"></script>

<script>
function test1()
{
var d = $('myp');
alert(d.innerHTML);
}

function test2()
{
var ps = $('myp','myOtherp');
for(i=0; i<ps.length; i++)
{
alert(ps[i].innerHTML);
}
}
</script>
</HEAD>

<BODY>
<p id="myp">
<p>This is a paragraph</p>
</p>
<p id="myOtherp">
<p>This is another paragraph</p>
</p>

<input type="button" value=Test1 onclick="test1();"><br>
<input type="button" value=Test2 onclick="test2();"><br>
</BODY>
</HTML>


這個方法的另一個好處就是你可以傳入id字符串或者元素對象自己,這使得在創(chuàng)建可以傳入任何形式參數(shù)的方法的時候, 它變得非常有用。

2.2. 使用$F()方法
$F()方法是另一個非常受歡迎的簡寫。它可以返回任何輸入表單控件的值,如文本框或下拉框。 這個方法可以傳入元素的id或者元素自己。

<script>
function test3()
{
alert( $F('userName') );
}
</script>
<input type="text" id="userName" value="Joe Doe"><br>
<input type="button" value=Test3 onclick="test3();"><br>


2.3. 使用Try.these()方法
Try.these() 方法使得實現(xiàn)當(dāng)你想調(diào)用不同的方法直到其中的一個成功正常的這種需求變得非常容易, 他把一系列的方法作為參數(shù)并且按順序的一個一個的執(zhí)行這些方法直到其中的一個成功執(zhí)行,返回成功執(zhí)行的那個方法的返回值。

在下面的例子中, xmlNode.text在一些瀏覽器中好用,但是xmlNode.textContent在另一些瀏覽器中正常工作。 使用Try.these()方法我們可以得到正常工作的那個方法的返回值。

<script>
function getXmlNodeValue(xmlNode){
return Try.these(
function() {return xmlNode.text;},
function() {return xmlNode.textContent;)
);
}
</script>


3. Ajax 對象
上面提到的共通方法非常好,但是面對它吧,它們不是最高級的那類東西。它們是嗎?你很可能自己編寫了這些甚至在你的腳本里面有類似功能的方法。但是這些方法只是冰山一角。

我很肯定你對prototype.js感興趣的原因很可能是由于它的AJAX能力。所以讓我們解釋當(dāng)你需要完成AJAX邏輯的時候,這個包如何讓它更容易。

Ajax 對象是一個預(yù)定義對象,由這個包創(chuàng)建,為了封裝和簡化編寫AJAX 功能涉及的狡猾的代碼。 這個對象包含一系列的封裝AJAX邏輯的類。我們來看看它們的一些。

3.1. 使用 Ajax.Request類
如果你不使用任何的幫助程序包,你很可能編寫了整個大量的代碼來創(chuàng)建XMLHttpRequest對象并且異步的跟蹤它的進程, 然后解析出響應(yīng) 然后處理它。當(dāng)你不需要支持多于一種類型的瀏覽器時你會感到非常的幸運。

為了支持 AJAX 功能。這個包定義了 Ajax.Request 類。

假如你有一個應(yīng)用程序可以通過url http://www.gxlcms.com/與服務(wù)器通信。它返回下面這樣的XML 響應(yīng)。

<?xml version="1.0" encoding="utf-8" ?>
<ajax-response>
<response type="object" id="productDetails">
<monthly-sales>
<employee-sales>
<employee-id>1234</employee-id>
<year-month>1998-01</year-month>
<sales>$8,115.36</sales>
</employee-sales>
<employee-sales>
<employee-id>1234</employee-id>
<year-month>1998-02</year-month>
<sales>$11,147.51</sales>
</employee-sales>
</monthly-sales>
</response>
</ajax-response>


用 Ajax.Request對象和服務(wù)器通信并且得到這段XML是非常簡單的。下面的例子演示了它是如何完成的。

<script>
function searchSales()
{
var empID = $F('lstEmployees');
var y = $F('lstYears');
var url = 'http://yoursever/app/get_sales';
var pars = 'empID=' + empID + '&year=' + y;
var myAjax = new Ajax.Request(
url,
{method: 'get', parameters: pars, onComplete: showResponse}
);

}

function showResponse(originalRequest)
{
//put returned XML in the textarea
$('result').value = originalRequest.responseText;
}
</script>

<select id="lstEmployees" size="10" onchange="searchSales()">
<option value="5">Buchanan, Steven</option>
<option value="8">Callahan, Laura</option>
<option value="1">Davolio, Nancy</option>
</select>
<select id="lstYears" size="3" onchange="searchSales()">
<option selected="selected" value="1996">1996</option>
<option value="1997">1997</option>
<option value="1998">1998</option>
</select>
<textarea id=result cols=60 rows=10 ></textarea>


你看到傳入 Ajax.Request構(gòu)造方法的第二個對象了嗎? 參數(shù){method: 'get', parameters: pars, onComplete: showResponse} 表示一個匿名對象的真實寫法。他表示你傳入的這個對象有一個名為 method 值為 'get'的屬性,另一個屬性名為 parameters 包含HTTP請求的查詢字符串,和一個onComplete 屬性/方法包含函數(shù)showResponse。

還有一些其它的屬性可以在這個對象里面定義和設(shè)置,如 asynchronous,可以為true 或 false 來決定AJAX對服務(wù)器的調(diào)用是否是異步的(默認值是 true)。

這個參數(shù)定義AJAX調(diào)用的選項。在我們的例子中,在第一個參數(shù)通過HTTP GET命令請求那個url,傳入了變量 pars包含的查詢字符串, Ajax.Request 對象在它完成接收響應(yīng)的時候?qū)⒄{(diào)用showResponse 方法。

也許你知道, XMLHttpRequest在HTTP請求期間將報告進度情況。這個進度被描述為四個不同階段:Loading, Loaded, Interactive, 或 Complete。你可以使 Ajax.Request 對象在任何階段調(diào)用自定義方法 ,Complete 是最常用的一個。想調(diào)用自定義的方法只需要簡單的在請求的選項參數(shù)中的名為 onXXXXX 屬性/方法中提供自定義的方法對象。 就像我們例子中的 onComplete 。你傳入的方法將會被用一個參數(shù)調(diào)用,這個參數(shù)是 XMLHttpRequest 對象自己。你將會用這個對象去得到返回的數(shù)據(jù)并且或許檢查包含有在這次調(diào)用中的HTTP結(jié)果代碼的 status 屬性。

還有另外兩個有用的選項用來處理結(jié)果。我們可以在onSuccess 選項處傳入一個方法,當(dāng)AJAX無誤的執(zhí)行完后調(diào)用, 相反的,也可以在onFailure選項處傳入一個方法,當(dāng)服務(wù)器端出現(xiàn)錯誤時調(diào)用。正如onXXXXX 選項傳入的方法一樣,這兩個在被調(diào)用的時候也傳入一個帶有AJAX請求的XMLHttpRequest對象。

我們的例子沒有用任何有趣的方式處理這個 XML響應(yīng), 我們只是把這段XML放進了一個文本域里面。對這個響應(yīng)的一個典型的應(yīng)用很可能就是找到其中的想要的信息,然后更新頁面中的某些元素, 或者甚至可能做某些XSLT轉(zhuǎn)換而在頁面中產(chǎn)生一些HTML。

3.2. 使用 Ajax.Updater 類
如果你的服務(wù)器的另一端返回的信息已經(jīng)是HTML了,那么使用這個程序包中 Ajax.Updater 類將使你的生活變得更加得容易。用它你只需提供哪一個元素需要被AJAX請求返回的HTML填充就可以了,例子比我寫說明的更清楚。

<script>
function getHTML()
{
var url = 'http://yourserver/app/getSomeHTML';
var pars = 'someParameter=ABC';

var myAjax = new Ajax.Updater('placeholder', url, {method: 'get', parameters: pars});

}
</script>
<input type=button value=GetHtml onclick="getHTML()">
<p id="placeholder"></p>


你可以看到,這段代碼比前面的例子更加簡潔,不包括 onComplete 方法,但是在構(gòu)造方法中傳入了一個元素id。 我們來稍稍修改一下代碼來描述如何在客戶端處理服務(wù)器段錯誤成為可能。

我們將加入更多的選項, 指定處理錯誤的一個方法。這個是用 onFailure 選項來完成的。

我們也指定了一個 placeholder 只有在成功請求之后才會被填充。為了完成這個目的我們修改了第一個參數(shù)從一個簡單的元素id到一個帶有兩個屬性的對象, success (一切OK的時候被用到) 和 failure (有地方出問題的時候被用到) 在下面的例子中沒有用到failure屬性,而僅僅在 onFailure 處使用了 reportError 方法。

<script>
function getHTML()
{
var url = 'http://yourserver/app/getSomeHTML';
var pars = 'someParameter=ABC';
var myAjax = new Ajax.Updater(
{success: 'placeholder'},
url,
{method: 'get', parameters: pars, onFailure: reportError});

}

function reportError(request)
{
alert('Sorry. There was an error.');
}
</script>
<input type=button value=GetHtml onclick="getHTML()">
<p id="placeholder"></p>


如果你的服務(wù)器邏輯是返回JavaScript 代碼而不是單純的 HTML 標(biāo)記, Ajax.Updater對象可以執(zhí)行那段JavaScript代碼。為了使這個對象對待響應(yīng)為JavaScript,你只需在最后參數(shù)的對象構(gòu)造方法中簡單加入evalScripts: true屬性。

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

prototype1.5初體驗_prototype

prototype1.5初體驗_prototype:一直沒有沒有時間看prototype,現(xiàn)在好了,已經(jīng)更新到了1.5 pre1,呵呵,強大的功能不得不學(xué)習(xí)啊,這個是提升自己JS能力的又一個捷徑. 1. Prototype是什么 或許你還沒有用過它, prototype.js 是一個由Sam Stephenson寫的JavaScript包。這
推薦度:
標(biāo)簽: pr 1.5 prototype
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 国产呦系列 欧美呦 日韩呦 | 不卡的中文字幕 | 成人毛片一区二区三区 | 国产成人久久精品二区三区 | 国产一二三区视频 | 亚洲综合日韩在线亚洲欧美专区 | 亚洲国产天堂久久九九九 | 黄色在线观看网站 | 波多野结衣网站 | 精品国产日韩一区三区 | 高清精品一区二区三区一区 | 五月天丁香网 | 国产毛片一级国语版 | 国产欧美日韩视频 | 亚洲国产精品婷婷久久久久 | 国产在线观看不卡 | 国产精品专区第二 | 亚洲精品电影 | 亚洲国产 | 日韩欧美一区二区三区视频 | 国产免费全部免费观看 | 伊人97| 亚洲精品高清国产一久久 | 一区二区网站 | 国产高清不卡一区二区 | 欧美一区二区在线观看 | 美女视频黄a视频全免费网站色 | 国产69精品久久 | 手机看日韩| 欧美一区二区三区在线观看 | 日韩专区第一页 | 全网毛片免费 | 影音先锋中文字幕资源 | 91麻豆视频网站 | 午夜大片在线观看 | 国产精品国产亚洲精品看不卡 | 国产亚洲欧美日韩俺去了 | 精品欧美日韩一区二区三区 | 91系列在线观看免费 | 国产欧美精品区一区二区三区 | 五十路中文字幕 |