prototype.js开发笔记<o:p></o:p>
Table of Contents<o:p></o:p>
1. Programming Guide <o:p></o:p>
1.1. Prototype是什么? <o:p></o:p>
1.2. 关联文章 <o:p></o:p>
1.3. 通用性方法 <o:p></o:p>
1.3.1. 使用 $()方法 <o:p></o:p>
1.3.2. 使用$F()方法 <o:p></o:p>
1.3.3. 使用$A()方法 <o:p></o:p>
1.3.4. 使用$H()方法 <o:p></o:p>
1.3.5. 使用$R()方法 <o:p></o:p>
1.3.6. 使用Try.these()方法<o:p></o:p>
1.4. Ajax 对象 <o:p></o:p>
1.4.1. 使用 Ajax.Request类 <o:p></o:p>
1.4.2. 使用 Ajax.Updater 类<o:p></o:p>
2. prototype.js参考 <o:p></o:p>
2.1. JavaScript 类的扩展 <o:p></o:p>
2.2. 对 Object 类的扩展 <o:p></o:p>
2.3. 对 Number 类的扩展 <o:p></o:p>
2.4. 对 Function 类的扩展 <o:p></o:p>
2.5. 对 String 类的扩展 <o:p></o:p>
2.6. 对 document DOM 对象的扩展 <o:p></o:p>
2.7. 对 Event 对象的扩展 <o:p></o:p>
2.8. 在 prototype.js中定义的新对象和类 <o:p></o:p>
2.9. PeriodicalExecuter 对象 <o:p></o:p>
2.10. Prototype 对象 <o:p></o:p>
2.11. Class 对象 <o:p></o:p>
2.12. Ajax 对象 <o:p></o:p>
2.13. Ajax.Base 类 <o:p></o:p>
2.14. Ajax.Request 类 <o:p></o:p>
2.15. options 参数对象 <o:p></o:p>
2.16. Ajax.Updater 类 <o:p></o:p>
2.17. Ajax.PeriodicalUpdater 类 <o:p></o:p>
2.18. Element 对象 <o:p></o:p>
2.19. Abstract 对象 <o:p></o:p>
2.20. Abstract.Insertion 类 <o:p></o:p>
2.21. Insertion 对象 <o:p></o:p>
2.22. Insertion.Before 类 <o:p></o:p>
2.23. Insertion.Top 类 <o:p></o:p>
2.24. Insertion.Bottom 类 <o:p></o:p>
2.25. Insertion.After 类 <o:p></o:p>
2.26. Field 对象 <o:p></o:p>
2.27. Form 对象 <o:p></o:p>
2.28. Form.Element 对象 <o:p></o:p>
2.29. Form.Element.Serializers 对象 <o:p></o:p>
2.30. Abstract.TimedObserver 类 <o:p></o:p>
2.31. Form.Element.Observer 类 <o:p></o:p>
2.32. Form.Observer 类 <o:p></o:p>
2.33. Abstract.EventObserver 类 <o:p></o:p>
2.34. Form.Element.EventObserver 类 <o:p></o:p>
2.35. Form.EventObserver 类 <o:p></o:p>
2.36. Position 对象 (预备文档)<o:p></o:p>
<o:p></o:p>
Chapter 1. Programming Guide<o:p></o:p>
1.1. Prototype是什么?<o:p></o:p>
或许你还没有用过它, prototype.js 是一个由Sam Stephenson写的JavaScript包。这个构思奇妙编写良好的一段兼容标准的一段代码将承担创造胖客户端, 高交互性WEB应用程序的重担。轻松加入Web 2.0特性。<o:p></o:p>
如果你最近体验了这个程序包,你很可能会发现文档并不是它的强项之一。像所有在我之前的开发者一样,我只能一头扎进prototype.js的源代码中并且试验其中的每一个部分。 我想当我学习他的时候记写笔记然后分享给其他人将会很不错。<o:p></o:p>
我也一起提供了这个包的对象,类,方法和扩展的 非官方参考 。<o:p></o:p>
1.2. 关联文章<o:p></o:p>
高级JavaScript指南<o:p></o:p>
1.3. 通用性方法<o:p></o:p>
这个程序包里面包含了许多预定义的对象和通用性方法。编写这些方法的明显的目的就是为了减少你大量的重复编码和惯用法。<o:p></o:p>
1.3.1. 使用 $()方法<o:p></o:p>
$() 方法是在DOM中使用过于频繁的 document.getElementById() 方法的一个便利的简写,就像这个DOM方法一样,这个方法返回参数传入的id的那个元素。<o:p></o:p>
比起DOM中的方法,这个更胜一筹。你可以传入多个id作为参数然后 $() 返回一个带有所有要求的元素的一个 Array 对象。下面的例子会向你描述这些。<o:p></o:p>
<HTML><o:p></o:p>
<HEAD><o:p></o:p>
<TITLE> Test Page </TITLE><o:p></o:p>
<script src="prototype-1.3.1.js"></script><o:p></o:p>
<o:p></o:p>
<script><o:p></o:p>
function test1()<o:p></o:p>
{<o:p></o:p>
var d = $('myDiv');<o:p></o:p>
alert(d.innerHTML);<o:p></o:p>
}<o:p></o:p>
<o:p></o:p>
function test2()<o:p></o:p>
{<o:p></o:p>
var divs = $('myDiv','myOtherDiv');<o:p></o:p>
for(i=0; i<divs.length; i++)<o:p></o:p>
{<o:p></o:p>
alert(divs[i].innerHTML);<o:p></o:p>
}<o:p></o:p>
}<o:p></o:p>
</script><o:p></o:p>
</HEAD><o:p></o:p>
<o:p></o:p>
<BODY><o:p></o:p>
<div id="myDiv"><o:p></o:p>
<p>This is a paragraph</p><o:p></o:p>
</div><o:p></o:p>
<div id="myOtherDiv"><o:p></o:p>
<p>This is another paragraph</p><o:p></o:p>
</div><o:p></o:p>
<o:p></o:p>
<input type="button" value=Test1 onclick="test1();"><br><o:p></o:p>
<input type="button" value=Test2 onclick="test2();"><br><o:p></o:p>
<o:p></o:p>
</BODY><o:p></o:p>
</HTML><o:p></o:p>
这个方法的另一个好处就是你可以传入id字符串或者元素对象自己,这使得在创建可以传入任何形式参数的方法的时候, 它变得非常有用。<o:p></o:p>
1.3.2. 使用$F()方法<o:p></o:p>
$F()方法是另一个非常受欢迎的简写。它可以返回任何输入表单控件的值,如文本框或下拉框。 这个方法可以传入元素的id或者元素自己。<o:p></o:p>
<script><o:p></o:p>
function test3()<o:p></o:p>
{<o:p></o:p>
alert( $F('userName') );<o:p></o:p>
}<o:p></o:p>
</script><o:p></o:p>
<o:p></o:p>
<input type="text" id="userName" value="Joe Doe"><br> <o:p></o:p>
<input type="button" value=Test3 onclick="test3();"><br><o:p></o:p>
1.3.3. 使用$A()方法<o:p></o:p>
$A()方法把接收到的参数转换成一个Array对象。<o:p></o:p>
这个方法加上对Array类的扩展,可以很容易的转换或者复制任意的列举列表到Array对象, 一个被推荐使用的用法就是转换DOM的NodeLists到一个普通的数组里,可以被更广泛高效的使用, 看下面的例子。<o:p></o:p>
<script><o:p></o:p>
<o:p></o:p>
function showOptions(){<o:p></o:p>
var someNodeList = $('lstEmployees').getElementsByTagName('option');<o:p></o:p>
var nodes = $A(someNodeList);<o:p></o:p>
<o:p></o:p>
nodes.each(function(node){<o:p></o:p>
alert(node.nodeName + ': ' + node.innerHTML);<o:p></o:p>
});<o:p></o:p>
}<o:p></o:p>
</script><o:p></o:p>
<o:p></o:p>
<select id="lstEmployees" size="10" ><o:p></o:p>
<option value="5">Buchanan, Steven</option><o:p></o:p>
<option value="8">Callahan, Laura</option><o:p></o:p>
<option value="1">Davolio, Nancy</option><o:p></o:p>
</select><o:p></o:p>
<o:p></o:p>
<input type="button" value="Show the options" onclick="showOptions();" > <o:p></o:p>
1.3.4. 使用$H()方法<o:p></o:p>
$H()方法把对象转化成可枚举的貌似联合数组Hash对象。<o:p></o:p>
<script><o:p></o:p>
function testHash()<o:p></o:p>
{<o:p></o:p>
//let's create the object<o:p></o:p>
var a = {<o:p></o:p>
first: 10,<o:p></o:p>
second: 20,<o:p></o:p>
third: 30<o:p></o:p>
};<o:p></o:p>
<o:p></o:p>
//now transform it into a hash<o:p></o:p>
var h = $H(a);<o:p></o:p>
alert(h.toQueryString()); //displays: first=10&second=20&third=30<o:p></o:p>
}<o:p></o:p>
<o:p></o:p>
</script><o:p></o:p>
1.3.5. 使用$R()方法<o:p></o:p>
$R()方法是new ObjectRange(lowerBound, upperBound, excludeBounds)的一个简单快捷的使用方式。<o:p></o:p>
ObjectRange类文档里面有完整的解释。 同时,我们来看看一个简单的例子, 来演示通过each方法遍历的用法。 那个方法的更多解释在Enumerable对象文档里面。<o:p></o:p>
<script><o:p></o:p>
function demoDollar_R(){<o:p></o:p>
var range = $R(10, 20, false);<o:p></o:p>
range.each(function(value, index){<o:p></o:p>
alert(value);<o:p></o:p>
});<o:p></o:p>
}<o:p></o:p>
<o:p></o:p>
</script><o:p></o:p>
<o:p></o:p>
<input type="button" value="Sample Count" onclick="demoDollar_R();" > <o:p></o:p>
1.3.6. 使用Try.these()方法<o:p></o:p>
Try.these() 方法使得实现当你想调用不同的方法直到其中的一个成功正常的这种需求变得非常容易, 他把一系列的方法作为参数并且按顺序的一个一个的执行这些方法直到其中的一个成功执行,返回成功执行的那个方法的返回值。<o:p></o:p>
在下面的例子中, xmlNode.text在一些浏览器中好用,但是xmlNode.textContent在另一些浏览器中正常工作。 使用
分享到:
相关推荐
下面是Prototype.js的开发笔记,涵盖了该库的使用指南、Ajax对象、JavaScript类的扩展、对象的扩展、事件处理等多个方面。 一、Programming Guide Prototype.js是一个强大的JavaScript库,提供了许多有用的函数和...
【标题】:Prototype.js开发笔记 【描述】:本文档主要涵盖了Prototype.js库的编程指南,包括其核心概念、通用方法、Ajax对象...这份开发笔记将帮助你理解和利用Prototype.js的强大功能,提升你的JavaScript开发实践。
2. prototype.js参考 2.1. JavaScript 类的扩展 2.2. 对 Object 类的扩展 2.3. 对 Number 类的扩展 2.4. 对 Function 类的扩展 2.5. 对 String 类的扩展 2.6. 对 document DOM 对象的扩展 2.7. 对 Event 对象的扩展 ...
Prototype.js 是一个广泛使用的 JavaScript 库,它为浏览器环境提供了许多实用的功能,极大地简化了 JavaScript 的开发。这个库的核心理念是扩展JavaScript的基本对象和类型,使其更加面向对象,同时提供了丰富的DOM...
总结,Prototype.js是JavaScript开发中的一个重要工具,它通过一系列强大的API和设计模式,使得JavaScript的开发更加高效、优雅。通过学习和掌握Prototype,开发者可以更好地驾驭JavaScript,创造出更具交互性的Web...
或许你还没有用过它, prototype.js 是一个由Sam Stephenson写的JavaScript包。这个构思奇妙编写良好的一段兼容标准的一段代码将承担创造胖客户端, 高交互性WEB应用程序的重担。轻松加入Web 2.0特性。 <br...
而“prototype_js 1_4版开发者手册 - Lyn-事繁勿慌,事闲勿荒,取象于取,外圆内方 - 博客园.mht”和“compdoc2cn prototype_js开发笔记.mht”是两篇开发者撰写的笔记和手册,提供了个人实践经验和深入理解。...
prototype.js开发笔记 prototype.js是一个非常优雅的javascript基础类库,对javascript做了大量的扩展,而且很好的支持Ajax,国外有多个基于此类库实现的效果库,也做得很棒。 prototype.js不仅是一个有很大实用...
万一你没有使用过大名鼎鼎的prototype.js,那么让我来告诉你,prototype.js是由Sam Stephenson写的一个javascript类库。这个构思奇妙,而且兼容标准的类库,能帮助你轻松建立有高度互动的web2.0特性的富客户端页面。...