Prototype中dom对象方法汇总


Posted in Javascript onSeptember 17, 2008

以下部分一个一个的详细介绍:

$(element):getElementById的封装,element可以是一个元素的id或元素本身,也可以是一个数组,这时返回一个数组,使用$方法,会自动调用Element.extend(element)方法,这样的话使元素可以直接调用Element中的方法, 例如Element.hide(element)可以写成这样$(element).hide()

document.getElementsByClassName(className, parentElement): 根据class选择元素

Element.extend(element): 扩展element,使element可以直接调用Element、Form.Element或Form中定义的方法

Element对象的方法:

visible: function(element):判断element是否可见, 参数element可以是元素本身或元素id(下面的方面的参数基本上都是这样的)
toggle: function(element):反转element的可见性
hide: function(element):隐藏元素
show: function(element):显示元素
remove: function(element):移除元素
update: function(element, html) :使用html更新element的内容,html中的script会执行(下同)
replace: function(element, html):将element替换为html
inspect: function(element):element的字符串表示
recursivelyCollect: function(element, property): 递归收集, 例如Element.recursivelyCollect(element, "parentNode")返回element所有的祖先节点, 注意只返回nodeType == 1的元素,也就是不返回文本元素
ancestors: function(element): 等同于上面的例子,返回元素的所有祖先节点
descendants: function(element): 返回所有子孙节点
immediateDescendants: function(element):返回元素的直接的子孙节点(子节点)的数组
previousSiblings: function(element):返回元素前面的兄弟节点
nextSiblings: function(element):返回位于元素后面的兄弟节点
siblings: function(element):返回元素所有的兄弟节点
match: function(element, selector):使用Selector的match方法匹配元素(Selector将在后面介绍), selector参数是一个css selector表达式或者Prototype中的一个Selector实例,如果element匹配selector则返回true,否则返回false,例如对于一个className为logcss的div来说,下面的表达式返回true, $(element).match("div.logcss") 待续。。

//update 2006-11-30 09:40

up(element, expression, index):利用Selector.findElement方法找到element元素的祖先节点中符合表达式expression的所有元素组成的数组索引为index的元素,也可以忽略expression(默认为*,表示匹配所有元素)和index(默认为0),直接这样调用up(element, index)或up(element)
down(element, expression, index):跟up一样,只是返回的是子孙节点
previous(element, expression, index):返回前面的兄弟节点
next(element, expression, index):返回后面的兄弟节点
getElementsBySelector(element,args):Selector.findChildElements(element, args)的封装,args表示可以传递多个参数,每个参数是一个css selector表达式,返回element的子孙节点中符合任何一个css selector表达式的元素组成的数组
getElementsByClassName(element, className):返回element中的子孙节点中符合clsssName的元素
readAttribute(element, name):return $(element).getAttribute(name),之所以添加这个方法是因为在IE和Safari(Mac)中getAttribute不是一个真正的函数,它没有call、apply等方法,所以在很多时候调用会出现错误(Prototype中很多地方使用了函数的这两个方法),例如下面的例子(官方文档中的一个例子),就只能使用readAttribute:

<div id="widgets">
<div class="widget" widget_id="7">...</div>
<div class="widget" widget_id="8">...</div>
<div class="widget" widget_id="9">...</div>
</div>
$$('div.widget').invoke('readAttribute', 'widget_id')
// ["7", "8", "9"]

//Update 2006-12-1

getHeight: function(element):返回元素高度,return element.offsetHeight
classNames: function(element):返回一个Element.ClassNames对象,改对象提供对元素class的操作,包括add、remove、set等,一般很少使用,使用Element.addClassName等方法就可以了(就在下面)
hasClassName: function(element, className) :判断element是否含有className
addClassName: function(element, className) :给element添加一个class
removeClassName: function(element, className) :移除元素中的一个class
observe():调用Event对象(Prototype中的,将在后面介绍)的observe方法为元素注册事件handle
stopObserving() :移除注册的事件handle
cleanWhitespace: function(element):移除元素中空白的文本子节点
empty: function(element):判断元素是否为空
childOf: function(element, ancestor) :判断element是否为ancestor的子孙节点
scrollTo: function(element) :滚动条移动到元素所在的地方
getStyle: function(element, style) :得到元素某个css样式的值,例如$(element).getStyle("float")
setStyle: function(element, style) :设置元素的css样式,style十一个对象,例如element.setStyle({left: "40px", "background-color":"#666"})
getDimensions: function(element) :得到元素的尺寸,即使元素是隐藏的也可以正确的返回,返回 return {width: originalWidth, height: originalHeight}这样的关联数组
makePositioned: function(element) :当元素的position css属性为static或不存在使,将次属性更改为relative
undoPositioned: function(element) :跟makePositioned相反的操作
makeClipping: function(element) :把元素变成clipping(切片),也就是设置元素的overflow属性为hidden
undoClipping: function(element):反转上面的方法对元素所做的修改
hasAttribute(element):判断元素是否有某个属性

Element对象的方法是不是不少啊,哈哈,下面介绍有关Insertion的四个类

Insertion.Before:将内容插入到元素的前面,内容在元素外面
Insertion.Top:将内容插入到元素的顶部,内容在元素里面
Insertion.Bottom:将内容插入到元素的底部,内容在元素里面
Insertion.After:将内容插入到元素后面,内容在元素外面

使用它们的方法比较简单:new Insertion.where(element, content),其中where表示上面的Before、Top等,content是html字符串,注意其中javascript片断会执行

终于写完了,Prototype的Element方法还真不少

虽然以前觉得自己对Prototype还比较熟悉,写的也有点累,但是发现自己收获仍然挺大的,为了写出这些方法的具体作用和用法,必须强迫自己一行行的把Prototype的代码弄清楚,使自己对Prototype中很多精巧的写法有了更深刻的认识和理解

写这个教程的主要目的是为了给大家一个快速的参考,大家还是对照着源代码看才会真正有所提高

Javascript 相关文章推荐
Js 本页面传值实现代码
May 17 Javascript
屏蔽Flash右键信息的js代码
Jan 17 Javascript
JQuery自适应IFrame高度(支持嵌套 兼容IE,ff,safafi,chrome)
Mar 28 Javascript
jquery根据name属性查找的小例子
Nov 21 Javascript
JS数组去重与取重的示例代码
Jan 24 Javascript
详解Vue Elememt-UI构建管理后台
Feb 27 Javascript
Bootstrap table中toolbar新增条件查询及refresh参数使用方法
May 18 Javascript
解析vue data不可以使用箭头函数问题
Jul 03 Javascript
JS实现的新闻列表自动滚动效果示例
Jan 30 Javascript
深入浅析nuxt.js基于ssh的vue通用框架
May 21 Javascript
对node通过fs模块判断文件是否是文件夹的实例讲解
Jun 10 Javascript
Javascript Dom元素获取和添加详解
Sep 24 Javascript
Javascript 读后台cookie代码
Sep 15 #Javascript
javascript高亮效果的二种实现方法
Sep 14 #Javascript
jquery 必填项判断表单是否为空的方法
Sep 14 #Javascript
js直接编辑当前cookie的脚本
Sep 14 #Javascript
javascript一些不错的函数脚本代码
Sep 10 #Javascript
利用Ext Js生成动态树实例代码
Sep 08 #Javascript
用JavaScrpt实现文件夹简单轻松加密的实现方法图文
Sep 08 #Javascript
You might like
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
2011/04/18 PHP
php中二维数组排序问题方法详解
2015/08/28 PHP
PHP控制反转(IOC)和依赖注入(DI)
2017/03/13 PHP
自写简单JS判断是否已经弹出页面
2010/10/20 Javascript
jquery利用event.which方法获取键盘输入值的代码
2011/10/09 Javascript
JS this作用域以及GET传输值过长的问题解决方法
2013/08/06 Javascript
JS实现多物体缓冲运动实例代码
2013/11/29 Javascript
nodejs的10个性能优化技巧
2014/07/15 NodeJs
在Javascript操作JSON对象,增加 删除 修改的简单实现
2016/06/02 Javascript
Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码
2016/06/28 Javascript
jQuery学习笔记——jqGrid的使用记录(实现分页、搜索功能)
2016/11/09 Javascript
微信公众平台开发教程(四) 实例入门:机器人回复(附源码)
2016/12/02 Javascript
通过jsonp获取json数据实现AJAX跨域请求
2017/01/22 Javascript
基于AGS JS开发自定义贴图图层
2017/03/31 Javascript
在vue-cli创建的项目中使用sass操作
2020/08/10 Javascript
使用Typescript开发微信小程序的步骤详解
2021/01/12 Javascript
[01:18]PWL开团时刻DAY10——一拳超人
2020/11/11 DOTA
python和C语言混合编程实例
2014/06/04 Python
Python高级应用实例对比:高效计算大文件中的最长行的长度
2014/06/08 Python
Python的装饰器模式与面向切面编程详解
2015/06/21 Python
Python的Flask框架中SQLAlchemy使用时的乱码问题解决
2015/11/07 Python
在IPython中执行Python程序文件的示例
2018/11/01 Python
python如何删除列为空的行
2020/07/17 Python
python实现三壶谜题的示例详解
2020/11/02 Python
python归并排序算法过程实例讲解
2020/11/04 Python
python3 os进行嵌套操作的实例讲解
2020/11/19 Python
印度化妆品购物网站:Nykaa
2018/07/22 全球购物
会计学生自我鉴定
2014/02/06 职场文书
《李时珍夜宿古寺》教学反思
2014/04/09 职场文书
创业培训计划书
2014/05/03 职场文书
公司爱心捐款倡议书
2014/05/14 职场文书
班子群众路线教育实践个人对照检查材料思想汇报
2014/09/30 职场文书
物业保安辞职信
2015/05/12 职场文书
2015年初一班主任工作总结
2015/05/13 职场文书
解决Nginx 配置 proxy_pass 后 返回404问题
2021/03/31 Servers
Python中的 No Module named ***问题及解决
2022/07/23 Python