Mootools 1.2教程(3) 数组使用简介


Posted in Javascript onSeptember 14, 2009

今天,我们在来看看如何使用数组来管理DOM元素。
基本方法
.each();
在处理数组时,.each();方法是你最好的朋友。它提供了一种很容易的方法来遍历数组的每个元素,如果有需要还可以对其中的元素进行任何逻辑处理。例如,我们可以假设你需要为页面中的每个div对象调用alert方法:
参考代码:

$$('div').each(function() { 
alert('a div'); 
});

如果使用下面的HTML代码,上面的JavaScript代码将弹出两个alert对话框,每个div一个。
参考代码:
<div>One</div> 
<div>Two</div>

.each();方法不需要你使用$$方法。创建一个数组的另一种方式(就像我们昨天讲到过的)是使用.getElements();方法。
参考代码:
$('body_wrap').getElements('div').each(function() { 
alert('a div'); 
});

参考代码:
<div id="body_wrap"> 
<div>One</div> 
<div>Two</div> 
</div>

还有另外一种方法来完成这个相同的任务,就是把这个数组赋值给一个变量,然后对那个变量使用.each();方法:
参考代码:
// 首先你需要通过语句”var VARIABLE_NAME“来声明一个变量 
// 然后用等于运算符”=“来给这个变量赋值 
// 在这个例子中,是一个包含div元素的数组 
var myArray = $('body_wrap').getElements('div'); 
// 现在你就可以把这个变量当数组选择器使用了 
myArray.each(function() { 
alert('a div'); 
});

最后,如果你可能想把你的函数从选择器中独立出来。我们会在明天的关于使用函数的教程中更深入地讲解这个问题。不过,现在我们可以创建一个非常简单的示例:
参考代码:
var myArray = $('body_wrap').getElements('div'); 
// 要创建一个函数,你可以像刚才一样声明一个变量,然后给它命名 
// 在等号后面使用”function()“来声明这个变量为一个函数 
// 最后,在 { 和 }之间写入你的函数代码 
var myFunction = function() { 
alert('a div'); 
}; 
// 现在你就可以在.each();.方法里面调用刚才的函数了 
myArray.each(myFunction);

注意:当你像刚才那样在.each();.方法里面调用函数时,你不需要给函数名加上引号。
复制一个数组
$A
MooTools提供了一个简单的方式——通过$A函数来复制一个数组。让我们像刚才那样使用变量创建一个数组:
参考代码:
// 创建你的数组变量 
var myArray = $('body_wrap').getElements('div');

复制一个数组(创建该数组的副本):
参考代码:
// 建立一个新的变量名,命名为”myCopy“,然后把”myArray“的副本赋值给它 
var myCopy = $A(myArray );

从数组中获取指定的元素
.getLast();
.getLast();方法返回数组中最后一个元素。首先我们建立一个数组:
参考代码:
var myArray = $('body_wrap').getElements('div');

现在我们可以从这个数组中获取最后一个元素:
参考代码:
var lastElement = myArray.getLast();

变量lastElement现在的值就是数组myArray中的最后一个元素了。
.getRandom();
和.getLast();一样,不过它随机从数组中取得一个元素:
参考代码:
var randomElement = myArray.getRandom();

变量randomElement现在的值就是从数组myArray中随机选取的一个元素了。
向数组中添加一个元素
.include();
通过这个方法,你可以给数组添加另外一个元素。只要把元素选择器传给.include();方法,它就会包含到你的数组中。我们使用下面的HTML代码:
参考代码:
<div id="body_wrap"> 
<div>one</div> 
<div>two</div> 
<span id="add_to_array">add to array</span> 
</div>

我们可以像以前那样调用”body_wrap“下面的所有div一样来创建一个数组:
参考代码:
var myArray = $('body_wrap').getElements('div');

要把另外一个元素添加到这个数组中,首先你需要把这个元素赋值给一个变量,然后使用include方法:
参考代码:
// 首先把你的元素赋值给一个变量 
var newToArray = $('add_to_array'); 
// 然后把它添加到数组 
myArray.include(newToArray);

现在,这个数组就同时包含div和span元素了。
.combine();
和.include();方法一样,不过它可以让你把一个数组添加到一个已经存在的数组中,而不用担心有重复的内容。假设我们现在从下面的HTML中取得了两个数组:
参考代码:
<div id="body_wrap"> 
<div>one</div> 
<div>two</div> 
<span class="class_name">add to array</span> 
<span class="class_name">add to array, also</span> 
<span class="class_name">add to array, too</span> 
</div>

我们可以这样建立两个数组:
参考代码:
// 就像我们以前那样建立你的数组 
var myArray= $('body_wrap').getElements('div'); 
// 然后建立一个所有CSS类名为.class_name的元素数组 
var newArrayToArray = $$('.class_name');

现在我们可以使用.combine();方法来合并两个数组,这个方法会自己处理重复的元素,因此我们不需要处理:
参考代码:
// 把数组newArrayToArray合并到数组myArray中 
myArray.combine(newArrayToArray );

现在myArray就包含了newArraytoArray中的所有元素。
代码示例
数组可以让你遍历包含所有项目的列表,并对每个元素执行相同的代码。在这个例子中,注意变量”item“作为当前元素的替代符的使用。
参考代码:
// 创建一个数组,这个数组包含”body_wrap“里面所有CSS类名为.class_name的元素 
var myArray = $('body_wrap').getElements('.class_name'); 
// 首先建立一个要添加到数组中的元素 
var addSpan = $('addtoarray'); 
// 然后建立一个要合并的数组 
var addMany = $$('.addMany'); 
// 现在我们把元素addSpan加入到数组中 
myArray.include(addSpan); 
// 然后合并数组addMany到myArray中 
myArray.combine(addMany); 
// 建立一个需要对数组中的每个元素都要执行的函数 
var myArrayFunction = function(item) { 
// item现在指向数组中的当前元素 
item.setStyle('background-color', '#eee'); 
} 
// 现在对数组中的每个项目调用myArrayFunction函数 
myArray.each(myArrayFunction);

参考代码:
<div id="body_wrap"> 
<div class="class_name">one</div><!-- this has gray background --> 
<div>two</div> 
<div class="class_name">three</div><!-- this has gray background --> 
<span id="addtoarray">add to array</span> <!-- this has gray background --> 
<br /><span class="addMany">one of many</span> <!-- this has gray background --> 
<br /><span class="addMany">two of many</span> <!-- this has gray background --> 
</div>

延伸学习

这个教程并没有打算涵盖你能对数组做的全部事情,但是希望能够给你一个参考,告诉你MooTools提供了一些什么功能。要学习更多关于数组的东西,请仔细阅读这些内容:

  • 文档中的数组部分
  • 这个页面中有许多关于JavaScript数组的信息

下载一个包含你开始所需要的所有东西的zip包

包括一个简单的html文件、MooTools 1.2核心库、一个外部JavaScript文件、一个css文件和上面的所有例子。

Javascript 相关文章推荐
文本框的字数限制功能jquery插件
Nov 24 Javascript
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(下:动画篇)
Mar 24 Javascript
javascript权威指南 学习笔记之null和undefined
Sep 25 Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
Oct 15 Javascript
键盘上一张下一张兼容IE/google/firefox等浏览器
Jan 28 Javascript
jQuery实现的网页竖向菜单效果代码
Aug 26 Javascript
JavaScript实现仿新浪微博大厅和腾讯微博首页滚动特效源码
Sep 15 Javascript
js实现瀑布流的三种方式比较
Jun 28 Javascript
基于jquery实现轮播特效
Apr 22 Javascript
javascript 中关于array的常用方法详解
May 05 Javascript
webpack打包后直接访问页面图片路径错误的解决方法
Jun 17 Javascript
聊聊Vue中provide/inject的应用详解
Nov 10 Javascript
Mootools 1.2教程(2) DOM选择器
Sep 14 #Javascript
MooTools 1.2介绍
Sep 14 #Javascript
IE与Firefox在JavaScript上的7个不同写法小结
Sep 14 #Javascript
JavaScript 函数调用规则
Sep 14 #Javascript
prototype与jquery下Ajax实现的差别
Sep 13 #Javascript
JS 参数传递的实际应用代码分析
Sep 13 #Javascript
javascript类继承机制的原理分析
Sep 12 #Javascript
You might like
rrmdir php中递归删除目录及目录下的文件
2011/05/15 PHP
浅析echo(),print(),print_r(),return之间的区别
2013/11/27 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
2014/02/02 PHP
ThinkPHP查询语句与关联查询用法实例
2014/11/01 PHP
smarty实现多级分类的方法
2014/12/05 PHP
根据key删除数组中指定的元素实现方法
2017/03/02 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
PHP实现长轮询消息实时推送功能代码实例讲解
2021/02/26 PHP
10款新鲜出炉的 jQuery 插件(Ajax 插件,有幻灯片、图片画廊、菜单等)
2011/06/08 Javascript
jQuery控制的不同方向的滑动(向左、向右滑动等)
2014/07/18 Javascript
jQuery获取对象简单实现方法小结
2014/10/30 Javascript
了不起的node.js读书笔记之例程分析
2014/12/22 Javascript
Jquery 分页插件之Jquery Pagination
2015/08/25 Javascript
18个非常棒的jQuery代码片段
2015/11/02 Javascript
JS实现网页上随机产生超链接地址的方法
2015/11/09 Javascript
JS深度拷贝Object Array实例分析
2016/03/31 Javascript
纯js和css完成贪吃蛇小游戏demo
2016/09/01 Javascript
JavaScript中利用for循环遍历数组
2017/01/15 Javascript
React 无状态组件(Stateless Component) 与高阶组件
2018/08/14 Javascript
代码实例ajax实现点击加载更多数据图片
2018/10/12 Javascript
微信小程序调用天气接口并且渲染在页面过程详解
2019/06/24 Javascript
Nest.js环境变量配置与序列化详解
2021/02/21 Javascript
Python实现把json格式转换成文本或sql文件
2015/07/10 Python
python实现下载整个ftp目录的方法
2017/01/17 Python
查看django版本的方法分享
2018/05/14 Python
实例讲解Python中浮点型的基本内容
2019/02/11 Python
Python实现Singleton模式的方式详解
2019/08/08 Python
新手常见Python错误及异常解决处理方案
2020/06/18 Python
年级组长自我鉴定
2014/02/22 职场文书
家长寄语大全
2014/04/02 职场文书
结婚保证书范文
2014/04/29 职场文书
市场部经理岗位职责
2015/02/02 职场文书
拯救大兵瑞恩观后感
2015/06/09 职场文书
交通安全宣传标语(100条)
2019/08/22 职场文书
详解Python requests模块
2021/06/21 Python
Go语言grpc和protobuf
2022/04/13 Golang