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 相关文章推荐
不错的asp中显示新闻的功能
Oct 13 Javascript
JQuery模板插件 jquery.tmpl 动态ajax扩展
Nov 10 Javascript
JQuery验证工具类搜集整理
Jan 16 Javascript
详解JavaScript编程中正则表达式的使用
Oct 25 Javascript
js放大镜放大购物图片效果
Jan 18 Javascript
基于JQuery的购物车添加删除以及结算功能示例
Mar 08 Javascript
微信小程序实现团购或秒杀批量倒计时
Nov 01 Javascript
vue二级菜单导航点击选中事件的方法
Sep 12 Javascript
vue内置组件component--通过is属性动态渲染组件操作
Jul 28 Javascript
JS遍历树层级关系实现原理解析
Aug 31 Javascript
Vue 解决在element中使用$notify在提示信息中换行问题
Nov 11 Javascript
JavaScript小技巧带你提升你的代码技能
Sep 15 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
ThinkPHP 防止表单重复提交的方法
2011/08/08 PHP
php function用法如何递归及return和echo区别
2014/03/07 PHP
PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法示例
2017/08/10 PHP
php操作redis常见方法示例【key与value操作】
2020/04/14 PHP
JavaScript 常用函数
2009/12/30 Javascript
Js与下拉列表处理问题解决
2014/02/13 Javascript
jquery.gridrotator实现响应式图片展示画廊效果
2015/06/23 Javascript
Javascript获取统一管理的提示语(message)
2016/02/03 Javascript
清除浏览器缓存的几种方法总结(必看)
2016/12/09 Javascript
BootstrapTable请求数据时设置超时(timeout)的方法
2017/01/22 Javascript
基于jQuery的$.getScript方法去加载javaScript文档解析
2017/11/08 jQuery
JS实现的哈夫曼编码示例【原始版与修改版】
2018/04/22 Javascript
react 创建单例组件的方法
2018/04/26 Javascript
vue-cli 构建骨架屏的方法示例
2018/11/08 Javascript
如何在微信小程序里面退出小程序的方法
2019/04/28 Javascript
JS实现求字符串中出现最多次数的字符和次数示例
2019/07/05 Javascript
JS开发 富文本编辑器TinyMCE详解
2019/07/19 Javascript
vue实现简单瀑布流布局
2020/05/28 Javascript
jquery绑定事件 bind和on的用法与区别分析
2020/05/22 jQuery
微信小程序实现watch监听
2020/06/04 Javascript
安装Python和pygame及相应的环境变量配置(图文教程)
2017/06/04 Python
使用Python进行AES加密和解密的示例代码
2018/02/02 Python
Pyqt实现无边框窗口拖动以及窗口大小改变
2018/04/19 Python
python区块及区块链的开发详解
2019/07/03 Python
python字符串的拼接方法总结
2019/11/18 Python
python使用HTMLTestRunner导出饼图分析报告的方法
2019/12/30 Python
python3中sys.argv的实例用法
2020/04/24 Python
一款恶搞头像特效的制作过程 利用css3和jquery
2014/11/21 HTML / CSS
运动鞋中的劳斯莱斯:索康尼(SAUCONY)
2017/08/09 全球购物
阿巴庭院:Abba Patio
2019/06/18 全球购物
腾讯技术类校园招聘笔试试题
2014/05/06 面试题
普通院校学生的自荐信
2013/11/27 职场文书
护士节演讲稿开场白
2014/08/25 职场文书
大学生简历自我评价2015
2015/03/03 职场文书
2015年教师个人业务工作总结
2015/10/23 职场文书
维护民族团结心得体会2016
2016/01/15 职场文书