通过Mootools 1.2来操纵HTML DOM元素


Posted in Javascript onSeptember 15, 2009

我们已经学习过如何来选取DOM元素,怎么创建数组,怎么创建函数,怎么把事件添加到元素,今天我们来深入地学习一下如果操纵HTML元素。通过MooTools 1.2,你可以添加新元素到一个HTML页面中,也可以删除元素,以及改变任何样式或者元素参数,这些都非常容易。
基本方法
.get();
这个工具可以让你获取元素的属性(property)。元素的属性是组成一个HTML元素的各种不同部分,例如src、value、name等等。使用.get();方法非常简单:
参考代码:

// 下面这行将返回id为“id_name”的元素的html标记名(div、a、span……) 
$('id_name').get('tag');

参考代码:

<div id="body_wrap"> 
<span id="id_name">Element</span> <!-- 上面的代码将返回“span” --> 
</div>

你可以使用.get();方法获得更多属性,而不只是html标记名:
id
name
value
href
src
class(如果有多个CSS类名,则将返回全部CSS类名)
text (一个元素的文本内容)
等等…
.set();
.set();方法和.get();方法一样,不过不是获得一个值,而是设置一个值。当和事件联合使用时比较有用,通过这个方法你可以在页面加载之后改变一些属性值。
参考代码:
// 这将设置id为id_name的元素链接地址为“http://www.google.com”
$('id_name').set('href', 'http://www.google.com');

参考代码:

<div id="body_wrap"> 
<!-- 上面的代码将改变链接地址为“http://www.google.com” --> 
<a id="id_name" href="http://www.yahoo.com">Search Engine</a> 
</div>

.erase();
通过.erase();方法,你可以清除一个元素的属性值。它和前面两个方法类似。选取元素,然后选择你要清除的属性。
参考代码:
// 这讲移除id为id_name的元素的href属性
$('id_name').erase('href');

参考代码:

<div id="body_wrap"> 
<!-- 上面的代码将清除链接地址 --> 
<a href="http://www.yahoo.com">Search Engine</a> 
</div>

移动元素
.inject();
要移动页面上一个已经存在的元素,你可以使用.inject();方法。和我们看到的其它方法类似,它用起来也非常简单,可以在你的用户界面上给你更多操控权。要使用.inject();方法,首先要设置一些包含元素变量:
参考代码:

var elementA = $('elemA'); 
var elementB = $('elemB'); 
var elementC = $('elemC');

上面的代码把下面这个HTML分别赋值给了不同的变量,这样用MooTools来操作时会比较简单。
参考代码:
<div id="body_wrap"> 
<div id="elemA">A</div> 
<div id="elemB">B</div> 
<div id="elemC">C</div> 
</div>

现在,要改变这些元素的顺序,我们可以通过四种方式来使用.inject();方法。我们可以把元素注入到:
底部(bottom,默认)
顶部(top)
在某个元素的前面(before)
在某个元素的后面(after)
bottom和top将把这个元素注入到一个选中元素的内部,在元素内最底部或者最顶部。相对地,before和after将把一个元素注入到另外一个元素的顶部或者底部,但是不是注入到元素内部。
因此,让我们把元素顺序改变为A-C-B。由于我们不需要把一个元素注入到另外一个元素的内部,我们可以使用before或者after。
参考代码:
// 下面这句的意思是:把元素C放到元素B之前 
elementC.inject(elementB, 'before'); 
// 下面这句的意思是:把元素B放到元素C之后 
elementB.inject(elementC, 'after');

创建一个新元素
new Element
你可以使用“new Element”构造器来创建一个行的HTML元素。这和写一个正常的HTML元素非常类似,只不过你需要调整一下语法,以便能够在MooTools下正常运行:
参考代码:
// 首先命名一个变量并声明一个“new Element”
// 然后定义元素的类型(div、a、span...)
var newElementVar = new Element('div', {
// 在这里设置元素的所有属性
'id': 'id_name',
'text': 'I am a new div',
'styles': {
// 在这里设置元素的所有样式参数
'width': '200px',
'height': '200px',
'background-color': '#eee',
'float': 'left'
}
});
现在你就有一个元素了,你可以通过我们刚才学的inject();方法把这个元素放在页面上的某个位置。我们从下面这个简单的HTML开始:
参考代码:
<div id="body_wrap">
<div id="content_id">Some div content</div>
</div>
现在,我们把ID为content_id的元素转换为一个变量:
参考代码:
var bodyWrapVar = $('body_wrap');
和我们刚才学的一样,我们可以把我们创建的这个元素注入到当前的HTML中:
参考代码:
// 这句的意思是说:“把newElementVar注入到bodyWrapVar内部,并放置到顶部”
newElementVar.inject(bodyWrapVar , 'top');
这个代码最终可能是这样的:
参考代码:
<div id="body_wrap">
<!-- 这个元素被注入到内部顶部 -->
<div id="id_name">I am a new div</div>
<div id="content_id">Some div content</div>
</div>

示例
为了这个例子,我们来创建一个表单,可以让你添加一个行元素到你的HTML页面。首先,建立一些文本框和按钮。
参考代码:

<div id="body_wrap"> 
ID: <input id="id_input" name="id" /> 
text: <input id="text_input" name="text" /> 
<button id="new_div">创建一个新的div</button> 
</div>

现在,我们来用MooTools写JavaScript来实现让这个HTML表单可以插入一个新的元素到你的页面中。首先,我们先给这个按钮添加一个事件,并写一个函数来包含我们的代码:
参考代码:
var newDiv = function() { 
// 我们将把“添加一个新元素”的代码放在这里 
}; 
window.addEvent('domready', function() { 
$('new_div').addEvent('click', newDiv); 
});

下一件事我们要做的就是指定我们要处理的变量。要使用输入表单中的数据,我们需要使用.get();方法:
参考代码:
var idValue = $('id_input').get('value'); 
var textValue = $('text_input').get('value');

现在,上面代码中的变量idValue和textValue就包含了它们指定的输入表单的值。由于我们需要在用户点击“创建一个新的div”按钮时获得输入框的值,我们需要把上面的代码放在newDiv();这个函数中。如果我们需要在这个函数外面获得这个值,我们需要在页面加载时获得,而不是点击时。
参考代码:
var newDiv = function() { 
var idValue = $('id_input').get('value'); 
var textValue = $('text_input').get('value'); 
}; 
window.addEvent('domready', function() { 
$('new_div').addEvent('click', newDiv); 
});

接下里,我们需要获得我们新元素要插入到的元素:
参考代码:
var newDiv = function() { 
var idValue = $('id_input').get('value'); 
var textValue = $('text_input').get('value'); 
var bodyWrapVar = $('newElementContainer'); 
}; 
window.addEvent('domready', function() { 
$('new_div').addEvent('click', newDiv); 
});

我们已经有了我们的输入表单的值了,现在我们可以创建一个新元素了:
参考代码:
var newDiv = function() { 
var idValue = $('id_input').get('value'); 
var textValue = $('text_input').get('value'); 
var bodyWrapVar = $('newElementContainer'); 
var newElementVar = new Element('div', { 
// 这将设置这个元素的id为idValue的值 
'id': idValue, 
// 这将设置这个元素的文本为textValue的值 
'html': textValue 
}); 
}; 
window.addEvent('domready', function() { 
$('new_div').addEvent('click', newDiv); 
});

剩下我们要做的就是把这个新元素插入到我们的页面中了:
参考代码:
var newDiv = function() { 
var bodyWrapVar = $('newElementContainer'); 
var idValue = $('id_input').get('value'); 
var textValue = $('text_input').get('value'); 
var newElementVar = new Element('div', { 
'id': idValue, 
'text': textValue 
}); 
// 下面这句是说:“把newElementVar插入到bodyWrapVar的内部顶部” 
newElementVar.inject(bodyWrapVar, 'top'); 
}; 
var removeDiv = function() { 
// 这将删除内部的html值(就是div标记类的所有东西) 
$('newElementContainer').erase('html'); 
} 
window.addEvent('domready', function() { 
$('new_div').addEvent('click', newDiv); 
$('remove_div').addEvent('click', removeDiv); 
});

更多学习...

一定要花一些时间看一些MooTools文档中的Elements这一节:

  • Element这一节包含了我们这里讲到的大多数内容,还有很多其它内容
  • Element.style可以给你在元素样式属性上更多的控制权(有些东西我们将在以后的教程中深入讲解)
  • Element.dimentions包含了处理位置、坐标、尺寸大小等东西的工具
Javascript 相关文章推荐
jQuery 常见开发使用技巧总结
Dec 26 Javascript
JS鼠标事件大全 推荐收藏
Nov 01 Javascript
JS小功能(setInterval实现图片效果显示时间)实例代码
Nov 28 Javascript
javascript实现避免页面按钮重复提交
Jan 08 Javascript
Jquery实现遮罩层的简单实例(就是弹出DIV周围都灰色不能操作)
Jul 14 Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
Oct 24 Javascript
AngularJS的ng Http Request与response格式转换方法
Nov 07 Javascript
JavaScript调试的多个必备小Tips
Jan 15 Javascript
jquery实现折叠菜单效果【推荐】
Mar 08 Javascript
vue项目创建并引入饿了么elementUI组件的步骤
Apr 11 Javascript
微信小程序实现搜索功能并跳转搜索结果页面
May 18 Javascript
springboot+VUE实现登录注册
May 27 Vue.js
Mootools 1.2教程 事件处理
Sep 15 #Javascript
Mootools 1.2教程 函数
Sep 15 #Javascript
Mootools 1.2教程(3) 数组使用简介
Sep 14 #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
You might like
php 移除数组重复元素的一点说明
2008/11/27 PHP
PHP中ID设置自增后不连续的原因分析及解决办法
2016/08/21 PHP
TP5框架安全机制实例分析
2020/04/05 PHP
jQueryPad 实用的jQuery测试工具(支持IE,chrome,FF)
2010/05/22 Javascript
在jQuery1.5中使用deferred对象 着放大镜看Promise
2011/03/12 Javascript
Js从头学起(基本数据类型和引用类型的参数传递详细分析)
2012/02/16 Javascript
jquery实现智能感知连接外网搜索
2013/05/21 Javascript
JS根据变量保存方法名并执行方法示例
2014/04/04 Javascript
javascript在IE下trim函数无法使用的解决方法
2014/09/12 Javascript
js时间戳转为日期格式的方法
2015/12/28 Javascript
jQuery插件Flexslider实现图片轮播、图文结合滑动切换效果
2020/04/16 Javascript
详谈jQuery Ajax(load,post,get,ajax)的用法
2017/03/02 Javascript
jquery easyui如何实现格式化列
2017/07/30 jQuery
webpack 1.x升级过程中的踩坑总结大全
2017/08/09 Javascript
Angular4实现鼠标悬停3d倾斜效果
2017/10/25 Javascript
vue + element-ui实现简洁的导入导出功能
2017/12/22 Javascript
jQuery实现获取动态添加的标签对象示例
2018/06/28 jQuery
vue 本地环境跨域请求proxyTable的方法
2018/09/19 Javascript
Vue数据绑定实例写法
2019/08/06 Javascript
原生JS实现顶部导航栏显示按钮+搜索框功能
2019/12/25 Javascript
微信小程序之滑动页面隐藏和显示组件功能的实现代码
2020/06/19 Javascript
详解Vue的组件中data选项为什么必须是函数
2020/08/17 Javascript
[01:29:42]Liquid vs VP Supermajor决赛 BO 第一场 6.10
2018/07/05 DOTA
Python 获得13位unix时间戳的方法
2017/10/20 Python
Python实现PS滤镜碎片特效功能示例
2018/01/24 Python
Django框架教程之正则表达式URL误区详解
2018/01/28 Python
python使用tcp实现局域网内文件传输
2020/03/20 Python
利用html5 file api读取本地文件示例(如图片、PDF等)
2018/03/07 HTML / CSS
跑步爱好者一站式服务网站:Jack Rabbit
2016/09/01 全球购物
VICHY薇姿美国官方网站:欧洲药房第一的抗衰老品牌
2017/11/22 全球购物
PHP如何对用户密码进行加密
2014/07/31 面试题
娱乐节目策划方案
2014/06/10 职场文书
施工安全责任书范本
2014/07/24 职场文书
革命英雄事迹演讲稿
2014/09/13 职场文书
安全责任书
2015/01/29 职场文书
校运会通讯稿
2015/07/18 职场文书