JavaScript DOM实战:创建和克隆元素
DOM来创建和克隆元素。
createElement()和createTextNode()
createElement()和createTextNode()做的事情正如它们的名字所说的那样。最常见的JavaScript DOM方法实战-修改文档树中已经用过它们。当时的目的是把新创建的元素添加到文档树里,使它成为某个元素的最后一个子节点。
1. //创建一个li新元素
2. var newChild=document.createElement('li');
3. //创建一个a 新元素
4. var newLink=document.createElement('a')
5. //创建一个 Text 节点
6. var newText=document.createTextNode('My Wiki');
newChild指向新创建的<li>元素对象,newLink指向新创建的<a>元素对象,而newText指向新创建的文本节点对象。这些节点都还没有被插入文档中。最常见的JavaScript DOM方法实战-修改文档树中,用到的appendChild()或insertBefore()将它们附加到文档树中。例如:
1. var nav=document.getElementById("nav");
2. //创建一个li新元素
3. var newChild=document.createElement('li');
4. //创建一个a 新元素
5. var newLink=document.createElement('a')
6. //创建一个 Text 节点
7. var newText=document.createTextNode('My Wiki');
8. //把Text添加到a元素节点中
9. newLink.appendChild(newText);
10. //给a元素节点设置属性href和内容
11. newLink.setAttribute('href',"#");
12. //把a元素节点添加到新的li元素节点中
13. newChild.appendChild(newLink);
14. //把新的li元素节点添加到 ul 元素节点里
15. nav.appendChild(newChild);
这先将文本节点附加到<a>中,然后再将包含文本节点的<a>附加到<li>中,最后把包含<a>和文本的<li>附加到<ul>中。此时我的导航条ul中多了一个li子节点。
createTextNode()和HTML实体
createTextNode()有一个问题:它不能创建类似于€(€ 欧元符号)¥(¥ 人民币符号) © (© 版权符号)“(“左双引号)”(” 右双引号)等,这样的HTML实体元素。它会按字面创建文本,而不是创建你所需要的符号 。
1. <script type="text/javascript">
2. window.onload=function(){
3. var x=document.createTextNode("© Copyrights reserved");
4. document.getElementById("test").appendChild(x);
5. }
6. </script>
不过,我们可以使用innerHTML来代替:
1. <script type="text/javascript">
2. window.onload=function(){
3. document.getElementById("test").innerHTML="©
4. Copyrights reserved";
5. }
6. </script>
关于innerHTML属性的用法,我们会在下一节中作为专题来具体的讨论。
cloneNode()
cloneNode()方法克隆一个节点,即它能对节点做一个完美的复制,使你可以在随后将其插入到文档树中。导航条HTML代码:
1. <div id="menu">
2. <h1>我的导航条</h1>
3. <ul id="nav">
4. <li><a href="#">HOME</a></li>
5. <li><a href="#">(X)Html / Css</a></li>
6. <li><a href="#">Ajax / RIA</a></li>
7. <li><a href="#">GoF</a></li>
8. <li><a href="#">JavaScript</a></li>
9. <li><a href="#">JavaWeb</a></li>
10. <li><a href="#">jQuery</a></li>
11. <li><a href="#">MooTools</a></li>
12. <li><a href="#">Python</a></li>
13. <li><a href="#">Resources</a></li>
14. </ul>
15. </div>
测试cloneNode()
1. <script type="text/javascript">
2. window.onload=function(){
3. var nav_list=[];
4. var nav=document.getElementById("nav");
5. navnav_list=nav.getElementsByTagName("li");
6. var x=nav_list[0];
7. var y=x.cloneNode(true);
8. nav.appendChild(y);
9. }
10. </script>
要想正确的使用cloneNode(),你必须了解它的一下二个特征:
1. cloneNode()接受一个可选值为true或false的参数。True 表示克隆元素和它的所有子节点。False表示克隆元素但不包含它的子节点。通常,我们在实践中用true,我从来没有遇到过想要克隆一个节点但不包含它的子节点的情形。
2. cloneNode()不会克隆事件处理程序。这相当的让人恼火,不知道这个方法是怎么定义的(原因我也不知道)所以每次你克隆一个节点,你不得不在克隆上重新定义事件处理程序。
JavaScript DOM实战:创建和克隆元素的更多相关文章
- JavaScript DOM动态创建(声明)Object元素
http://www.cnblogs.com/GuominQiu/archive/2011/04/01/2002783.html 一文提及“等整个页面加载完毕后,根据用户所选的阅读机类型,再用Java ...
- Javascript:DOM动态创建元素实例应用
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- JavaScript dom 动态创建标记
此前的大多数DOM都是用来查找元素,getElementById和getElementsByTagName都可以方便快捷的找到文档中的某个或者某些特定的元素节点,这些元素随后可以用诸如setAttri ...
- JavaScript DOM三种创建元素的方式
三种创建元素的方式: document.write() element.innerHTML document.createElement() 初始HTML内容: <button>btn&l ...
- Javascript DOM 02 在<ul>中创建、删除 <li>
创建DOM元素 createElement(标签名) 创建一个节点 appendChild(节点) 追加一个节点 例子:为ul插入li 插入元素 insertBefore(节点, 原有节点) 在 ...
- DOM操作-克隆元素
代码: ———————————————————————————— <script type="text/javascript"> //克隆元素 ...
- JavaScript进阶 - 第9章 DOM对象,控制HTML元素
第9章 DOM对象,控制HTML元素 9-1 认识DOM 文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法.DOM 将HTML文档呈现为带有元素.属 ...
- webAPI(DOM) 2.1 获取页面元素 | 事件1 | 属性操作 | 节点 | 创建元素 | 事件2
js分三个部分: ECMAScript标准:js的基本语法 DOM:Ducument Object Model--->文档对象模型--->操作页面的元素 BOM:Browser Objec ...
- JavaScript学习笔记 - 进阶篇(8)- DOM对象,控制HTML元素
认识DOM 文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法.DOM 将HTML文档呈现为带有元素.属性和文本的树结构(节点树). 先来看看下面代码 ...
随机推荐
- Java实现 Base64、MD5、MAC、HMAC加密
开始对那些基本的加密还不怎么熟练,然后总结了些,写了一个测试:支持 Base64.MD5.MAC.HMAC加密,长话短说,我们都比较喜欢自己理解,看代码吧! 采用的输UTF-8的格式... packa ...
- android 安装应用程序apk安装不了
今天用测试机的时候遇到这个问题 解决办法: 在设置里面找到应用程序管理安全设置,,[允许未知来源程序安装] -------------大致以上思路,具体按钮名称我就不重新去找了------------ ...
- 【反射】——Autofac 类型注册
Autofac是.net界一款轻量化的IOC组件,使用Autofac可以帮助完成代码中很多依赖注入工作.在以前文章中,介绍过Autofac的配置过程(http://www.cnblogs.com/Jn ...
- Zabbix实现微信告警
zabbix实现微信告警可以分为以下两个步骤: 在百度告警告警平台实现微信告警 将Zabbix接入百度告警平台 微信告警 实现微信告警只需要如下四步: 个人主页关注微信 升级策略配置微信告警 服务管理 ...
- python-根据字符串动态生成对象eval
# -*- coding: utf-8 -*- stock1={ 'stockName':"沈阳机床", ", 'averagePrice_yesterday':34.0 ...
- VS2012配置Lua环境
1.VS2012配置BabeLua插件 2.VS2012配置Lua 1.VS2012配置BabeLua插件 BabeLua插件简介: 安装方法: 关闭VS2012后直接安装BabeLua插件. 下载地 ...
- 【CentOs】配置nginx
参考资料:http://nginx.org/en/linux_packages.html#stable 1.添加nginx.repo 2.配置nginx 3.启动nginx 1.添加nginx.rep ...
- Leetcode#105 Construct Binary Tree from Preorder and Inorder Traversal
原题地址 基本二叉树操作. O[ ][ ] [ ]O[ ] 代码: TreeNode *restore(vector< ...
- shader 里面的分支
shader 里面的真分支会降低效率 一种方法:构造一个分段函数出来 比如saturate(depth*1.5f)
- orbis 链接 .a的问题
orbis-clang.exe :error: no such file or directory : libppfxd_delta.a 这个东西真是见鬼 明明在那里就是说找不到 在依赖里libppf ...