JavaScript 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六)


Posted in Javascript onApril 07, 2012

http://www.cnblogs.com/TomXu/archive/2012/02/16/2351331.html , 在回来看这里文章,你一定会有更深刻的认识。因为我在这里介绍概念上的东西比较少,看下面的例子,对初学的朋友可能会有些吃力!

1、DOM的架构

<html> 
<head> 
<title>document</title> 
</head> 
<body> 
<h1>CSS Demo</h1> 
<p>我喜欢美女,特别是高个的美女</p> 
</body> 
</html>

这个文档的DOM表示如下图:

JavaScript 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六)

图片表示一个HTML文档的树.

所有DOM树结构表现为不同种类的Node对象的一个数,firstChild,lastChild,nextSibling,previousSibling和ParentNode属性提供遍历节点的树的一种办法,appendChild,removeChild,replaceChildh和insertBefore这样的方法可以像文档中添加节点或者从文档中删除节点。不明白没关系接下来我将用大量的例子让你明白。

1、先创建一个使用CSS美化的列表
<style type="text/css"> 
body{ margin:0px; padding:0px; } 
#container{font-family:tahoma;font-size:14px;border:solid 1px #99ffcc; width:200px;height:140px; float:left; } 
#container ul{list-style:none;padding:1px 0px 0px 0px; margin:0px;} 
#container ul li{ border-bottom:solid 1px #99ffcc; margin:0px;height:27px;} 
#container ul li a{background-color:gray;text-decoration:none;display:block; border-left:solid 10px red;margin:0px; padding:5px 0px 5px 10px;} 
#container ul li a:hover{background-color:red; color:#000000; } 
</style>

2、加一个div 元素.
<div id="container"> 
<ul id="list"> 
<li><a href="#">Home</a></li> 
<li id="myblog"><a href="#">MyBlog</a></li> 
<li><a href="#">Sport</a></li> 
<li><a href="#">News</a></li> 
<li><a href="#">Contane</a></li> 
</ul> 
</div>

3、你现在应该看到如下图:

JavaScript 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六)

4、根据上图获取元素总数
var Tools = {}; 
Tools.getElementCount = function(e){ 
var count =0; 
elementTotal(e); 
document.table.txt.value = "element:"+ count; 
function elementTotal(e) 
{ 
if(e.nodeType == 1) count++; 
var children = e.childNodes; 
for(var i = 0;i<children.length;i++) 
{ 
elementTotal(children[i]); 
} 
} 
};

备注:大家使用可以再body加入<button type ="button" onclick = "alert(Tools.getElementCount(document))">获取元素个数</button>
5、将文本全部大写
Tools.ModifyElement = function modify(e){ 
if(e.nodeType == 3) 
e.data = e.data.toUpperCase(); 
else 
{ 
for(var i = e.firstChild;i!=null;i=i.nextSibling) 
modify(i); 
} 
};

备注:大家使用可以再body加入<button type ="button" onclick = "Tools.ModifyElement(document)">大写</button>

效果:

JavaScript 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六) 

6、给列表排序
Tools.documentSort = function(e){ 
var textArray = []; 
if(typeof e =="string") e = document.getElementById(e); 
for(var x = e.firstChild; x!= null;x=x.nextSibling) 
if(x.nodeType == 1) textArray.push(x); 
textArray.sort(function(n,m){ 
var s = n.firstChild.firstChild.data; 
var t = m.firstChild.firstChild.data; 
if(s>t) return -1; 
else if(s<t) return 1; 
else return 0; 
});

备注:大家使用可以再body加入<button type ="button" onclick = "Tools.documentSort('list')">排序</button>

效果:

JavaScript 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六)

7、动态插入列表项(子节点) 
Tools.insertElement = function(n,e){ 
if(typeof n == "string") n = document.getElementById(n); 
var li = document.createElement(e); 
var a = document.createElement("a"); 
a.setAttribute("href","#"); 
var txt = document.createTextNode("HotBlog"); 
a.appendChild(txt); 
li.appendChild(a); 
var parent = n.parentNode; 
parent.insertBefore(li,n); 
};

备注:大家使用可以再body加入<button type ="button" onclick="Tools.insertElement('myblog','li');">插入</button>

效果: 

JavaScript 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六)

8、使用javascript类动态创建文档
1、样式表
.tooltip{background:url('2.jpg'); border:solid 1px #99ffcc; width:200px;height:200px;}//这里的图片大家要该一下 
.toolcontent{background-color:#ffffff; border:solid 1px #99ff00; padding:5px; font:tahoma 12px; color:#000000;}

2、javascript类
function Tooltip() 
{ 
this.tooltip = document.createElement("div"); 
this.tooltip.style.position = "absolute"; 
this.tooltip.className = "tooltip"; 
this.content = document.createElement("div"); 
this.content.style.position = "relative"; 
this.content.className = "toolcontent"; 
this.tooltip.appendChild(this.content); 
} 
Tooltip.prototype.show = function(text,x,y) 
{ 
this.content.innerHTML = text; 
this.tooltip.style.left = x+"px"; 
this.tooltip.style.top = y+"px"; 
this.tooltip.style.visibility = "visible"; 
if(this.tooltip.parentNode != document.body) 
document.body.appendChild(this.tooltip); 
}; 
Tooltip.prototype.hide = function(){ this.tooltip.style.visibility ="hidden";}; 
var t = new Tooltip(); 
function hide() 
{ 
t.hide(); 
} 
function show() 
{ 
t.show("hello ",300,0); 
} 
function init() 
{ 
document.operator.show.onclick = show; 
document.operator.hide.onclick = hide; 
}

备注:配合上面使用必须还完成以下步骤:1、将body中的onload=init();2 在body中添加 :
<form name = "operator">
<input type = "button" value = "隐藏" name = "hide"/>
<input type = "button" value = "显示" name = "show">
</form>
效果:(隐藏看到什么了) 

JavaScript 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六)JavaScript 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六)

9、动态添加样式和删除样式

1、样式表

.container{font-family:tahoma;font-size:14px;border:solid 1px #99ffcc; width:200px;height:140px;float:left;} 
.container ul{list-style:none;padding:1px 0px 0px 0px; margin:0px;} 
.container ul li{ border-bottom:solid 1px #99ffcc; margin:0px;height:27px;} 
.container ul li a{background-color:gray;text-decoration:none;display:block; border-left:solid 10px red;margin:0px; padding:5px 0px 5px 10px;} 
.container ul li a:hover{background-color:red; color:#ffffff; }

2、工具函数(动态添加、删除样式)
var CSSclass = {}; 
CSSclass.is = function(e,c){ 
if(typeof e == "string") e = document.getElementById(e); 
var classes = e.className; 
if(!classes) return false; 
if(classes == c) return true; 
return e.className.search("\\b" +c +"\\b*") != -1; 
}; 
CSSclass.add = function(e,c){ 
if(typeof e == "string") e = document.getElementById(e); 
if(CSSclass.is(e,c))return; 
//if(e.className) c=""+c; 
e.className += c; 
}; 
CSSclass.remove = function(e,c){ 
if(typeof e == "string") e = document.getElementById(e); 
//e.id = e.id.replace(new RegExp("\\b" +e.id +"\\b\\s*","g"),""); 
e.className = e.className.replace(new RegExp("\\b"+c+"\\b\\s*","g"),""); 
};

3、在body中加入如下元素
<div id="con"> 
<ul id="list"> 
<li><a href="#">Home</a></li> 
<li id="myblog"><a href="#">MyBlog</a></li> 
<li><a href="#">Sport</a></li> 
<li><a href="#">News</a></li> 
<li><a href="#">Content</a></li> 
</ul> 
<button type="button" name ="add" onclick = "CSSclass.add('con','container');">动态添加样式</button> 
<button type="button" name ="remove" onclick ="CSSclass.remove('con','container');">动态删除样式</button>

效果: 

JavaScript 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六)
没添加样式的样子
JavaScript 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六)
加了样式之后。

小结:Dom文档操作、内联样式、动态设置样式等就给大家分享到这里吧!其实还有很多细节没给大家呈现。下一篇我将分享我学习事件的历程。

(很多没有备注,大家有问题可以给我留言!) 

Javascript 相关文章推荐
setAttribute 与 class冲突解决
Feb 17 Javascript
如何让div span等元素能响应键盘事件操作指南
Nov 13 Javascript
固定网页背景图同时保持图片比例的思路代码
Aug 15 Javascript
sea.js常用的api简易文档
Nov 15 Javascript
微信小程序 http请求的session管理
Jun 07 Javascript
jQuery实现节点的追加、替换、删除、复制功能示例
Jul 11 jQuery
使用vue如何构建一个自动建站项目
Feb 05 Javascript
JavaScript 有用的代码片段和 trick
Feb 22 Javascript
JavaScript控制浏览器全屏显示简单示例
Jul 05 Javascript
自己动手封装一个React Native多级联动
Sep 19 Javascript
通过JavaScript下载文件到本地的方法(单文件)
Mar 17 Javascript
js实现翻牌小游戏
Jul 31 Javascript
JavaScript 高级篇之闭包、模拟类,继承(五)
Apr 07 #Javascript
JavaScript 高级篇之函数 (四)
Apr 07 #Javascript
JavaScript 基础篇之对象、数组使用介绍(三)
Apr 07 #Javascript
JavaScript 基础篇之运算符、语句(二)
Apr 07 #Javascript
为原生js Array增加each方法
Apr 07 #Javascript
jquery 操作DOM案例代码分享
Apr 05 #Javascript
jquery 操作DOM的基本用法分享
Apr 05 #Javascript
You might like
CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能
2014/07/18 PHP
33道php常见面试题及答案
2015/07/06 PHP
php实现登录页面的简单实例
2019/09/29 PHP
js 操作符实例代码
2009/10/24 Javascript
jQuery实现的立体文字渐变效果
2010/05/17 Javascript
基于jquery的跨域调用文件
2010/11/19 Javascript
再分享70+免费的jquery 图片滑块效果插件和教程
2014/12/15 Javascript
javascript实现节点(div)名称编辑
2014/12/17 Javascript
JavaScript检测并限制复选框选中个数的方法
2015/08/12 Javascript
JS+CSS实现的漂亮渐变背景特效代码(6个渐变效果)
2016/03/25 Javascript
详解JavaScript中Hash Map映射结构的实现
2016/05/21 Javascript
浅谈JS中逗号运算符的用法
2016/06/12 Javascript
利用JS实现简单的日期选择插件
2017/01/23 Javascript
简单实现js无缝滚动效果
2017/02/05 Javascript
vue拖拽组件 vuedraggable API options实现盒子之间相互拖拽排序
2019/07/08 Javascript
python使用mailbox打印电子邮件的方法
2015/04/30 Python
Python切片知识解析
2016/03/06 Python
JSON Web Tokens的实现原理
2017/04/02 Python
详谈python3 numpy-loadtxt的编码问题
2018/04/29 Python
python 美化输出信息的实例
2018/10/15 Python
在python中利用dict转json按输入顺序输出内容方式
2020/02/27 Python
pytorch中index_select()的用法详解
2021/01/06 Python
css3 边框、背景、文本效果的实现代码
2018/03/21 HTML / CSS
Sixt美国租车:高端豪华车型自驾体验
2017/09/02 全球购物
美国婴儿和儿童家具网上商店:ABaby.com
2018/07/02 全球购物
Java面试题及答案
2012/09/08 面试题
linux系统都有哪些运行级别
2016/03/26 面试题
某公司部分笔试题
2013/11/05 面试题
计算机应用毕业生自荐信
2013/10/23 职场文书
《寓言两则》教学反思
2014/02/27 职场文书
伦敦奥运会口号
2014/06/13 职场文书
校长师德师风自我剖析材料
2014/09/29 职场文书
2014年党支部书记工作总结
2014/12/04 职场文书
支教个人总结
2015/03/04 职场文书
毕业实习证明范本
2015/06/16 职场文书
百日宴上的祝酒词
2015/08/10 职场文书