- 浏览: 688314 次
- 性别:
- 来自: 合肥
文章分类
最新评论
-
di1984HIT:
学习了,学习了!
Tomcat的URL中文乱码解决以及传输优化 -
arottenapple:
...
我的二十一天CoreJava 学习笔记 -
黯淡流觞:
...
我的二十一天CoreJava 学习笔记 -
onlyOneToOne:
wsc830719 写道@RequestMapping(val ...
spring mvc3中 ResponseBody中文乱码 -
waj_615:
但是打印订单不是简单的string 啊
用java实现打印功能
原文地址:http://dojotoolkit.org/documentation/tutorials/1.7/dom_functions/
难度:低
版本:1.7
在这个教程中,你将学到如果使用DOJO来方便的操作DOM对象。操作DOM只是DOJO的的一小部分功能,通过它,你可以高效的取值,更新,增加和删除页面元素。
开始
javascript是基于浏览器的,DOM则是我们想要去展现给用户所看的界面。如果我们想在页面已经被加载完成后再进行组织修改页面,则就要使用javascript来修改DOM了。dojo的目标就是提供一种功能,能很方便的操作DOM对象,并能兼容各种浏览器,而且只使用很少量的代码就能实现。
下面是一个我们很常看的一组页面结构
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Demo: DOM Functions</title> <script src="http://ajax.googleapis.com/ajax/libs/dojo/1.7.1/dojo/dojo.js" data-dojo-config="async: true"> </script> <script> require(["dojo/domReady!"], function() { }); </script> </head> <body> <ul id="list"> <li id="one">One</li> <li id="two">Two</li> <li id="three">Three</li> <li id="four">Four</li> <li id="five">Five</li> </ul> </body> </html>
代码中已经包含了dojo的标签,而且现在你也应该认识require这一块的意思了。在require这个块里是整个页面加载完成后将要执行的语句的地方。
检索
首先,为了操作它们,我们要先学习如何来取得页面的DOM对象。最简单的方法是使用dojo/dom的byId方法来取资源。当你传入一个ID值给dojo.byId时,你将会得到一个含有该ID值的DOM对象节点的返回值,如果找不到有该ID值的元素,则返回null.
这个功能等同于使用document.getElementById,但有两个不同处。第一,他比较短,而且能兼容不同浏览器。另一个特点是,你可以传入一个DOM节点的ID值,也可以直接传入一个dojo对象节点。如果传入的是一个dojo对象节点,将会把那个对象立即返回,这有利于取值的方便。看个例子。
// Require the DOM resource require(["dojo/dom", "dojo/domReady!"], function(dom) { function setText(node, text){ node = dom.byId(node); node.innerHTML = text; } var one = dom.byId("one"); setText(one, "One has been set"); setText("two", "Two has been set as well"); });
setText方法将会设置节点,因为使用的是dojo.byId所以,传入的参数是ID值或节点效果都是一样的。
创建
我们经常会去创建页面元素。dojo并不阻止你去使用docement.createElement方法来创建元素,但用这种方法创建和设置节点的属性将要写出大量的代码。dojo提供了一个兼容浏览器的新方法,使用dojo/dom-construct的创建方法。
domConstruct.create有以下几个参数。节点名,属性,子/父节点,放置的位置(默认是last),返回值为创建的新的元素。看一个例子
require(["dojo/dom", "dojo/dom-construct", "dojo/domReady!"], function(dom, domConstruct) { var list = dom.byId("list"), three = dom.byId("three"); domConstruct.create("li", { innerHTML: "Six" }, list); domConstruct.create("li", { innerHTML: "Seven", className: "seven", style: { fontWeight: "bold" } }, list); domConstruct.create("li", { innerHTML: "Three and a half" }, three, "after"); });
一个列表中的选项被创建,设置其内容为"Six"并加入于列表中。下一步,另一个选项被创建,设置内容为"Seven",设置className值为"seven",让其有了一个加粗的样式,并将其放置于列表中。最后创建一个选项,设置内容为"Three and a half"把它放置于列表的后面,并给定ID值为"three"。
当你使用这种方法创建元素时,相对于innerHTML来说会怎么样?如果你已经有了内容,那么使用innerHTML来设置是最快的,但是,如果你并不是马上就要设置其内容并放入到DOM中,那么就使用domConstruct.create
放置
如果你在页面中已经有一个节点了并想移动它,那么你就要使用domConstruct.place这个方法。这个方法的参数有:DOM节点或ID值,要关联的DOM节点或ID值,要放置的位置,默认为last。这很像domConstruct.create方法,事实上,domConstruct.create是使用了domConstruct.place方法。如
<button id="moveFirst">The first item</button> <button id="moveBeforeTwo">Before Two</button> <button id="moveAfterFour">After Four</button> <button id="moveLast">The last item</button>
例子中定义了一个方法用来移动第三个节点
require(["dojo/dom", "dojo/dom-construct", "dojo/on", "dojo/domReady!"], function(dom, domConstruct, on){ function moveFirst(){ var list = dom.byId("list"), three = dom.byId("three"); domConstruct.place(three, list, "first"); } function moveBeforeTwo(){ var two = dom.byId("two"), three = dom.byId("three"); domConstruct.place(three, two, "before"); } function moveAfterFour(){ var four = dom.byId("four"), three = dom.byId("three"); domConstruct.place(three, four, "after"); } function moveLast(){ var list = dom.byId("list"), three = dom.byId("three"); domConstruct.place(three, list); } // Connect the buttons on(dom.byId("moveFirst"), "click", moveFirst); on(dom.byId("moveBeforeTwo"), "click", moveBeforeTwo); on(dom.byId("moveAfterFour"), "click", moveAfterFour); on(dom.byId("moveLast"), "click", moveLast); });
设置位置的参数有"before","after","replace","only","first","last"
删除
这里有两种方法来删除一个节点。使用domConstruct.destroy删除节点并删除其所拥有的所有子节点。domConstruct.empty将只会删除其子节点。两种方法都只接收ID值或节点对象参数。
<button id="destroyFirst">Destroy the first list item</button> <button id="destroyAll">Destroy all list items</button>
function destroyFirst(){
var list = dom.byId("list"), items = list.getElementsByTagName("li"); if(items.length){ domConstruct.destroy(items[0]); } } function destroyAll(){ domConstruct.empty("list"); } // Connect buttons to destroy elements on(dom.byId("destroyFirst"), "click", destroyFirst); on(dom.byId("destroyAll"), "click", destroyAll);
第一个按钮将删除第一个选项,第二个按钮将删除全部的列表
结论
至此,我们已经学了DOM对象主要的创建,移动,读取等操作,但他们都是一次只能操作一个对象。如果你想操作多个节点,你可以使用dojo/query方法
发表评论
-
dojo封装dialog提示框
2012-06-20 10:20 5658/** * 显示dojo的弹出框.前提是已经引用了相 ... -
dojo封装表单ajax提交
2012-06-20 10:16 1715/** * dojo的ajax提交form(post ... -
封装创建dojo的dialog
2012-06-18 13:55 0/** * 显示dojo的弹出框.前提是已经引用了相 ... -
自定义封装dojo通用ajax提交表单
2012-06-18 13:52 2654/** * dojo的ajax提交form(post ... -
使用dojo的dialog自定义confirm效果
2012-06-18 13:43 5125/** * 使用dojo dialog模拟confi ... -
dojo 制做非模态窗口dialog
2012-06-16 13:27 4330dojo的dialog效果基本上都是模态的,也就是说,在弹出窗 ... -
dojo1.7的加载方法
2012-06-01 17:16 4265对于dojo1.7来说,最大的变化就是引入了AMD异步加载器。 ... -
不翻译DOJO了
2012-05-16 17:57 1104翻译DOJO的时间并不长。总是感觉把老外的话翻译过来很是生硬, ... -
dojo1.7翻译 数组工具(Arrays Made Easy)
2012-05-14 10:55 1972英文地址:http://dojotoolkit.org/ ... -
dojo1.7翻译 Dijit的主题,按钮和文本框(Dijit Themes, Buttons, and Textboxes)
2012-05-03 15:52 2214原文地址:http://dojotoolkit.org/ ... -
dojo1.7翻译 动画效果(Animations)
2012-05-02 12:08 2781原文地址:http://dojotoolk ... -
dojo1.7翻译 动态效果(Dojo Effects)
2012-04-27 10:15 1322原文地址:http://dojotoolkit.org/doc ... -
dojo1.7翻译 ajax跨域请求(Getting Jiggy with JSONP)
2012-04-25 12:02 3162原文地址:http://dojotoolk ... -
dojo1.7翻译 ajax功能(Ajax with Dojo)
2012-04-24 15:04 1566原文地址:http://dojotoolk ... -
dojo1.7翻译 搜索节点功能(Using dojo/query)
2012-04-23 15:32 1911原文地址:http://dojotoolkit.org/doc ... -
dojo1.7翻译 hello,dojo
2012-04-22 15:21 2164原文地址:http://dojotoolkit.org/doc ... -
dojo1.7翻译 定义类(Classy JavaScript with dojo/_base/declare)
2012-04-20 15:34 2562原文地址:http://dojotoolkit.org/doc ... -
dojo1.7翻译 定义模块(Defining Modules)
2012-04-18 17:21 6859原文地址:http://dojotoolkit ... -
dojo1.7翻译 通过dojoConfig来配置dojo
2012-04-18 09:20 5232原文地址:http://dojotoolk ... -
dojo1.7翻译 Hello,World
2012-04-17 10:17 1604原文地址:http://dojotoolkit.org/ref ...
相关推荐
作为Dojo的基础模块,`dojo/_base`包含了许多核心功能,如事件处理、DOM操作、对象创建、定时器、数组操作等。了解并熟练掌握这些基础功能,是使用Dojo进行开发的基础。 三、dojo/query dojo/query类似于jQuery的 `...
require(["dojo/dom", "dijit/registry", "dojo/parser"], function(dom, registry, parser) { // 在模块加载完成后执行的回调函数 }); ``` - 由于模块拆分,一些核心和dijit模块被分解为更小的部分,以适应...
【Dojo 1.7 中文版本注释功能说明】 Dojo 1.7 是一个重大的版本更新,其中引入了显著的改进和新特性,尤其是对模块加载机制的革新。这一版本的核心亮点是实现了Asynchronous Module Definition (AMD)机制,这是一项...
7. **dojo/on**: Dojo 1.7 中的事件处理模块`dojo/on`提供了一种统一的方式来绑定和处理DOM事件,它兼容各种浏览器,提升了代码的可移植性和可维护性。 8. **dojo/aspect**: 这是一个面向切面编程(AOP)的模块,...
Dojo 框架的核心提供了诸如DOM操作、事件处理、AJAX请求、动画效果等功能。在Dojo 1.7 中,这些功能被重新组织并模块化,使得开发者可以根据需要按需加载,显著提高了页面加载速度。AMD模块化系统的引入是这一版本的...
10. **dojo.on**: Dojo 1.7引入了`dojo/on`模块,它提供了更现代、更符合DOM Level 2事件接口的事件处理方式,同时兼容老版本的`dojo.connect`。 以上所述是Dojo 1.6在DOM操作方面的核心功能。通过这些API,开发者...
其中,`dojo.byId()`方法便是Dojo中用于获取DOM元素的一个核心功能。 #### `dojo.byId()`方法详解 `dojo.byId()`方法在Dojo框架中充当了一个简化的`document.getElementById()`替代品,它不仅缩短了代码的书写长度...
Dojo的核心特性包括强大的DOM操作、事件处理、动画效果、Ajax支持以及国际化和本地化等功能。其中,`dojo.query`允许开发者使用CSS选择器来查找DOM元素,而`dojo.connect`则提供了事件绑定机制。此外,Dojo的动画库...
"dojo-release-1.7.3"包含了基础模块`dojo/_base`,其中封装了许多核心功能,如事件处理、DOM操作、动画效果等。这些基本功能是Dojo框架的核心部分,为其他高级模块提供支持。 3. **dijit** 和 **dojox** 模块 - ...
手册中列举了一些常用的Dojo包,如dojo.io用于不同类型的IO传输,dojo.dnd提供拖放功能的API,dojo.string提供了字符串处理方法,dojo.date帮助解析和操作日期,dojo.event处理事件驱动和AOP开发,dojo.back管理撤销...
`dojo.forEach`的灵活性在于它可以与其他Dojo函数结合使用,尤其是`dojo.query`,方便地处理DOM元素。例如,以下代码将禁用页面所有选择框: ```javascript dojo.forEach(dojo.query("select"), function(selectTag...
Dojo 是一个强大的JavaScript工具库,它为Web开发提供了丰富的功能和组件,涵盖了从DOM操作、事件处理到AJAX通信等多个方面。Dojo的核心在于它的模块化系统,这使得开发者可以按需加载代码,提高应用的性能和可维护...
Dojo事件处理框架是JavaScript库Dojo Toolkit中的一个重要组成部分,它提供了一种统一的方式来管理和处理DOM事件以及JavaScript对象之间的交互。这个系统深受面向切面编程(AOP)思想的影响,尤其是其advice机制,...
Dojo 1.7 引入了`on`事件处理函数,它提供了一个统一的事件监听API,支持DOM事件和自定义事件,使得事件处理更加简洁和高效。 8. **dojo/parser:** `parser`负责自动查找页面中的声明式标记,并将它们转换为运行...
6. **事件处理**:dojo提供了强大的事件处理机制,`dojo.connect`可以将函数连接到DOM事件,而`dojo.disconnect`可以断开连接。在Dojo 1.7及以后的版本中,推荐使用`dojo/on`模块来处理事件。 7. **动画效果**:...
Dojo 是一个强大的JavaScript工具库,它为Web开发提供了丰富的功能和组件,包括DOM操作、事件处理、动画效果、模块管理以及数据存储等。本文将通过一系列实例,帮助初学者快速掌握Dojo的核心概念和使用方法。 首先...
9. **dojo/on**:Dojo的事件处理模块,提供了一种统一的方式来监听DOM和非DOM事件,提高了代码的兼容性和可读性。 10. **dojo/Stateful**:这个基类为对象提供了属性观察和设置机制,是Dojo中实现数据绑定的基础。 ...
### Dojo框架中DOM树操作相关API解析 在现代Web开发中,DOM(Document Object Model)树是网页结构的核心组成部分,而Dojo框架提供了一系列强大的API来操作DOM元素,极大地简化了开发者的编码过程。本文将详细介绍...
Dojo 是一个强大的JavaScript工具库,它为Web开发提供了丰富的功能和组件,包括AJAX、DOM操作、事件处理、动画效果、模块化编程等。这个"dojo 官方教程 中文翻译"是针对Dojo框架的全面指南,帮助中文用户更好地理解...