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 相关文章推荐
js chrome浏览器判断代码
Mar 28 Javascript
jquery插件validate验证的小例子
May 08 Javascript
使用jQuery在对象中缓存选择器的简单方法
Jun 30 Javascript
js数组去重的方法汇总
Jul 29 Javascript
详解Html a标签中href和onclick用法、区别、优先级别
Jan 16 Javascript
Webpack如何引入bootstrap的方法
Jun 17 Javascript
JavaScript ES6中const、let与var的对比详解
Jun 18 Javascript
解析Json字符串的三种方法日常常用
May 02 Javascript
Vue组件通信中非父子组件传值知识点总结
Dec 05 Javascript
JS实现横向轮播图(中级版)
Jan 18 Javascript
vue 实现锚点功能操作
Aug 10 Javascript
javascript实现倒计时关闭广告
Feb 09 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
php&amp;java(二)
2006/10/09 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
2010/12/29 PHP
PHP下打开phpMyAdmin出现403错误的问题解决方法
2013/05/23 PHP
php基于str_pad实现卡号不足位数自动补0的方法
2014/11/12 PHP
php中使用key,value,current,next和prev函数遍历数组的方法
2015/03/17 PHP
详解ThinkPHP3.2.3验证码显示、刷新、校验
2016/12/29 PHP
php apache开启跨域模式过程详解
2019/07/08 PHP
在线编辑器的实现原理(兼容IE和FireFox)
2007/03/09 Javascript
IE8提示Invalid procedure call or argument 异常的解决方法
2012/09/30 Javascript
jquery $.fn $.fx是什么意思有什么用
2013/11/04 Javascript
提高NodeJS中SSL服务的性能
2014/07/15 NodeJs
jQuery使用之标记元素属性用法实例
2015/01/19 Javascript
浅谈JavaScript Math和Number对象
2015/01/26 Javascript
javascript下拉列表中显示树形菜单的实现方法
2015/11/17 Javascript
浏览器兼容的JS写法总结
2016/04/27 Javascript
基于javascript实现按圆形排列DIV元素(二)
2016/12/02 Javascript
javascript实现滑动解锁功能
2017/03/22 Javascript
jQuery+ajax实现局部刷新的两种方法
2017/06/08 jQuery
使用vue + less 实现简单换肤功能的示例
2018/02/21 Javascript
p5.js入门教程之鼠标交互的示例
2018/03/16 Javascript
express启用https使用小记
2019/05/21 Javascript
vue如何在用户要关闭当前网页时弹出提示的实现
2020/05/31 Javascript
vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作
2020/09/10 Javascript
将Python代码打包为jar软件的简单方法
2015/08/04 Python
Tensorflow实现卷积神经网络的详细代码
2018/05/24 Python
django 链接多个数据库 并使用原生sql实现
2020/03/28 Python
Pycharm学生免费专业版安装教程的方法步骤
2020/09/24 Python
惠普加拿大在线商店:HP加拿大
2017/09/15 全球购物
世界上最大的售后摩托车零配件超市:J&P Cycles
2017/12/08 全球购物
美国最大的电子宠物训练产品制造商:PetSafe
2018/10/12 全球购物
夫妻分居协议书范本
2014/11/28 职场文书
怎样写离婚协议书
2015/01/26 职场文书
学雷锋日活动总结
2015/02/06 职场文书
高中16字霸气押韵班级口号集锦!
2019/06/27 职场文书
诺贝尔奖获得者名言100句:句句启人心智,值永久收藏
2019/08/09 职场文书
大学生军训心得体会5篇
2019/08/15 职场文书