首页 > PHP资讯 > HTML5培训技术 > prototype.js使用详解

prototype.js使用详解

HTML5培训技术

一:简介
中文版:THIN
最后更新:2006-3-31
prototype.js 是什么?
万一你没有使用过大名鼎鼎的prototype.js,那么让我来告诉你,prototype.js是由Sam Stephenson写的一个javascript类库。这个构思奇妙,而且兼容标准的类库,能帮助你轻松建立有高度互动的web2.0 特性的富客户端页面。
如果你最近尝试使用它,你大概了解到文档并不是作者的一个强项。和在我以前使用这个类库的不少开发者一样,一开始,我不得不一头扎进阅读 prototype.js 的源代码和实验它的功能中。我想,在我学习完它之后,把我学到的东西分享给大家是件不错的事。
同时,在本文中,我也将提供一个关于这个类库提供的objects,classes,functions,extensions这对东东的非官方参考
在阅读这个文档时,熟悉 Ruby 的开发者将会注意到 Ruby 的一些内建类和本类库扩展实现之间非常相似。
相关文章
Advanced JavaScript guide.
二:一些实用的函数
这个类库带有很多预定义的对象和实用函数,这些东东的目的显然是把你从一些重复的打字中解放出来 。
2.1 使用$()方法
$() 方法是在 DOM 中使用过于频繁的 document.getElementById() 方法的一个便利的简写,就像这个 DOM 方法一样,这个方法返回参数传入的 id 的那个元素。比起 DOM 中的方法,这个更胜一筹。你可以传入多个 id 作为参数然后 $() 返回一个带有所有要求的元素的一个 Array 对象。
 
 
Test Page  
<script src="prototype1.4.js">《script》 
《script》  
function test1(){      
    var d=$('myDiv');      
    alert(d.innerHTML); 
     
     
function test2(){ 
    var divs=$('myDiv','myOtherDiv'); 
    for(i=0;i
        alert(divs[i].innerHTML);          
    } 
}《script》 
 
 
 

This is a paragraph

 
 
 

This is another paragraph

 
 


 
 
另外一个好处是,这个函数能传入用 string 表示的对象 ID,也可以传入对象本身,这样,在建立其它能传两种类型的参数的函数时非常有用。
2..2使用$F()函数
$F()函数是另一个大收欢迎的“快捷键”,它能用于返回任何表单输入控件的值,比如 text box,drop-down list。这个方法也能用元素 id 或元素本身做为参数。
《script》 
function test3(){ 
    alert($F('userName'));     
《script》 

 

2.3 使用$A()函数
$A()函数能把它接收到的单个的参数转换成一个 Array 对象。
这个方法,结合被本类库扩展了的 Array 类,能方便的把任何的可枚举列表转换成或拷贝到一个 Array 对象。一个推荐的用法就是把 DOM Node Lists 转换成一个普通的 Array 对象,从而更有效率的进行遍历,请看下面的例子。
《script》
function showOptions(){ 
    var someNodeList=$('lstEmployees').getElementsByTagName('option'); 
    var nodes=$A(someNodeList); 
    nodes.each(function (node){ 
        alert(node.nodeName+': '+node.innerHTML);          
    });     
}
《script》 
 
 Buchanan,Steven 
 Callahan,Laura 
 Davolio,Nancy 
 
 
2.4 使用$H() 函数
$H()函数把一些对象转换成一个可枚举的和联合数组类似的 Hash 对象。
《script》 
function testHash() 
{   
//let's create the object  
    var a={ 
        first:10,second:20,third:30 
    }; 
    //now transform it into a hash  
var h=$H(a);      
    alert(h.toQueryString()); 
    //displays: first=10&second=20&third=30  
     
《script》
2.5 使用$R()函数
$R()是 new ObjectRange(lowBound,upperBound,excludeBounds)的缩写。
跳到ObjectRange 类文档可以看到一个关于此类的完整描述. 此时,我们还是先来看一个例子以展示这个缩写能代替哪些方法吧。其它相关的一些知识可 以在Enumerable 对象文档中找到。
《script》 
function demoDollar_R(){ 
    var range=$R(10,20,false); 
    range.each(function (value,index){ 
        alert(value);         
    });     
《script》
2.6 使用Try.these()函数
Try.these() 方法使得实现当你想调用不同的方法直到其中的一个成功正常的这种需求变得非常容易, 他把一系列的方法作为参数并且按顺序的一
个一个的执行这些方法直到其中的一个成功执行,返回成功执行的那个方法的返回值。
在下面的例子中, xmlNode.text在一些浏览器中好用,但是xmlNode.textContent在另一些浏览器中正常工作。 使用 Try.these()
方法我们可以得到正常工作的那个方法的返回值。
《script》 
function getXmlNodeValue(xmlNode){ 
    return Try.these(function (){ 
        return xmlNode.text; 
         
    },function (){ 
        return xmlNode.textContent; 
        )); 
         
    } 
《script》
三:Ajax对象
上面提到的共通方法非常好,但是面对它吧,它们不是最高级的那类东西。它们是吗?你很可能自己编写了这些甚至在你的脚本里面有类似功能的方法。但是这些方法只是冰山一角。
我很肯定你对prototype.js感兴趣的原因很可能是由于它的AJAX能力。所以让我们解释当你需要完成AJAX逻辑的时候,这个包如何让它更容易。Ajax 对象是一个预定义对象,由这个包创建,为了封装和简化编写AJAX 功能涉及的狡猾的代码。 这个对象包含一系列的封装AJAX逻辑的类。我们来看看其中几个类
3.1 使用Ajax.Request类
如果你不使用任何的帮助程序包,你很可能编写了整个大量的代码来创建XMLHttpRequest对象并且异步的跟踪它的进程, 然后解析出响应 然后处理它。当你不需要支持多于一种类型的浏览器时你会感到非常的幸运。
为了支持 AJAX 功能。这个包定义了 Ajax.Request 类。
假如你有一个应用程序可以通过url http://yoursever/app/get_sales?empID=1234&year=1998与服务器通信。它返回下面这样的XML 响应。
 
Script 计时器。
Method
Kind
Arguments
Description
[ctor](container, url, options)
constructor
container:this can be the id of an element, the element object itself, or an object with two properties - object.success element (or id) that will be used when the AJAX call succeeds, and object.failure element (or id) that will be used otherwise. url: the url to be fetched, options: AJAX options
创建一个用给定的选项请求给定的url的一个实例。
start()
instance
(none)
这个方法通常不会被外部调用。 对象为了开始周期性执行任务的时候调用的方法。 
stop()
instance
(none)
使对象停止执行周期任务。停止后,如果有onComplete选项,那么引发callback。 
updateComplete()
instance
(none)
这个方法通常不会被外部调用。 被当前的 Ajax.Updater 使用,当一次请求结束的时候,它被用作计划下一次请求。 
onTimerEvent()
instance
(none)
这个方法通常不会被外部调用。当到下一次更新时被内部调用。 
5.4.12 The Element object
这个对象提供在操作DOM中元素时使用的功能性方法。
Method
Kind
Arguments
Description
addClassName(element, className)
instance
element: element object or id, className: name of a CSS class
将给出的className添加到对象的className属性中。
classNames(element)
instance
element: element object or id
返回一个Element.ClassName的对象表示CSS 给出对象有的class names。
cleanWhitespace(element)
instance
element: element object or id
清除对象子元素中所有空白的text node。
empty(element)
instance
element: element object or id
返回一个布尔值指示对象为空或只有空白字符。
getDimensions(element)
instance
element: element object or id
返回对象的尺寸,返回值有两个属性,height和width。 
getHeight(element)
instance
element: element object or id
返回元素的 offsetHeight 。
getStyle(element, cssProperty)
instance
element: element object or id, cssProperty name of a CSS property (either format 'prop-name' or 'propName' works).
返回给定对象的CSS属性值或没有指定cssProperty时返回null。
hasClassName(element, className)
instance
element: element object or id, className: name of a CSS class
返回 true 如果元素的类名中含有给定的类名
hide(elem1 [, elem2 [, elem3 [...]]])
instance
elemN: element object or id
通过设定style.display 为 'none'来隐藏每个传入的元素。 
makeClipping(element)
instance
element: element object or id
能过设定overflow的值设定内容溢出剪辑。
ma
本文由欣才IT学院整理发布,未经许可,禁止转载。