通过DOM脚本去设置样式信息


Posted in Javascript onSeptember 19, 2010

利用DOM脚本去设置样式信息:(by wushan)
在大多数场合,我们都用CSS去设置样式,但在某些特殊情况下,例如要根据元素在节点树里的位置来设置节点样式信息时,目前CSS还没办法做到这一点。但利用DOM就可以很轻易的完成。
例如:把一定样式施加到所有hl元素的下一兄弟节点(下一元素节点)上。这时候用CSS没办法确定位置,但用DOM的getElementsByTagName( )方法很容易就把所有hl元素后面的那个元素找出来,这时候只要对找出来的元素施加样式就可以了。以下是代码清单:

function styleHeaderSibling( ){ 
if(!document.getElementsByTagName) return false; 
//探测浏览器是否支持“getElementsByTagName”方法(个别浏览器并不支持DOM) 
var headers=document. getElementsByTagName(“hl”); 
for(var=0;i<headers.length;i++){ 
var elem=getNextElement(headers[i].nextSibling); 
elem.style.fontWeight=”bold”; 
elem.style.fontsize=”1.2em”; 
} 
} 
function getNextElement(node){ 
if(node.nodeType==1){ //此节点为文本节点 
return node; 

 } 

if(node.nextSibling){ 

retnrn getNextElement(node.nextSibling); 
  } 
return null; 
}

不足:让“行为层”去完成“表现层”工作,当需要改变DOM脚本设置的样式信息时,修改起来很麻烦,如果能给所要设置样式的节点声明一个class属性,那么修改起来就会很简单。例如我们可以对上述例子做出如下修改:
function styleHeaderSibling( ){ 
if(!document.getElementsByTagName) return false; 
//探测浏览器是否支持“getElementsByTagName”方法 
var headers=document. getElementsByTagName(“hl”); 
for(var=0;i<headers.length;i++){ 
var elem=getNextElement(headers[i].nextSibling); 
elem.className=”intro”; 
//给某元素设置class属性值的语法为:elements.className=value 
} 
}

由于此技巧有一不足之处:若该元素原本具有class属性值的话,那么原本的属性值就会被新的属性值所覆盖,原来的样式就会丢失,所有我们要在元class属性值的基础上追加新的属性值,而不是覆盖,方法如下:
function addClass(element,value){ 
if(!element.className){ 
element.className=value; 
 }else{ 
newclassName=element.className; 
newclassName +=" "; // 注意这个空格 
newclassName +=value; 
element.className=newclassName; 

} 
}

接着把上面的函数修改一下就可以了:
function styleHeaderSibling( ){ 
if(!document.getElementsByTagName) return false; 
//探测浏览器是否支持“getElementsByTagName”方法 
var headers=document. getElementsByTagName(“hl”); 
for(var=0;i<headers.length;i++){ 
var elem=getNextElement(headers[i].nextSibling); 
addClass(elem,”intro”); 
} 
}

说明:一般情况下,用DOM去设置样式是很不明智的,此方法只在CSS没办法按要求设置样式来充实页面内容的时候才用。

Javascript 相关文章推荐
静态的动态续篇之来点XML
Dec 23 Javascript
xml 与javascript结合的问题解决方法
Mar 24 Javascript
jquery mobile事件多次绑定示例代码
Sep 13 Javascript
JS实现的新浪微博大厅文字内容滚动效果代码
Nov 05 Javascript
js确认框confirm()用法实例详解
Jan 07 Javascript
Seajs 简易文档 提供简单、极致的模块化开发体验
Apr 13 Javascript
概述javascript在Google IE中的调试技巧
Nov 24 Javascript
Node.js中的require.resolve方法使用简介
Apr 23 Javascript
Node.js连接Sql Server 2008及数据层封装详解
Aug 27 Javascript
vue.js+ElementUI实现进度条提示密码强度效果
Jan 18 Javascript
JavaScript中的各种宽高属性的实现
May 08 Javascript
原生JavaScript实现轮播图
Jan 10 Javascript
javscript对象原型的一些看法
Sep 19 #Javascript
Ext 今日学习总结
Sep 19 #Javascript
JS面向对象编程 for Cookie
Sep 19 #Javascript
网络之美 JavaScript中Get和Set访问器的实现代码
Sep 19 #Javascript
asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码
Sep 19 #Javascript
jquery异步循环获取功能实现代码
Sep 19 #Javascript
JavaScript随机排序(随即出牌)
Sep 17 #Javascript
You might like
计算一段日期内的周末天数的php代码(星期六,星期日总和)
2009/11/12 PHP
php中常用字符串处理代码片段整理
2011/11/07 PHP
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
2014/01/22 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
2017/05/23 PHP
thinkphp分页集成实例
2017/07/24 PHP
jQuery之DOM对象和jQuery对象的转换与区别分析
2015/01/08 Javascript
浅析JavaScript动画
2015/06/10 Javascript
JS实现仿苹果底部任务栏菜单效果代码
2015/08/28 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖动基本操作
2015/11/30 Javascript
深入理解js generator数据类型
2016/08/16 Javascript
jquery.flot.js简单绘制折线图用法示例
2017/03/13 Javascript
JavaScript异步上传图片文件的实例代码
2017/07/04 Javascript
浅谈react-router HashRouter和BrowserRouter的使用
2017/12/29 Javascript
nodejs结合Socket.IO实现的即时通讯功能详解
2018/01/12 NodeJs
JS实现监控微信小程序的原理
2018/06/15 Javascript
react配置antd按需加载的使用
2019/02/11 Javascript
js定义类的方法示例【ES5与ES6】
2019/07/30 Javascript
JavaScript JSON使用原理及注意事项
2020/07/30 Javascript
解决vue-router路由拦截造成死循环问题
2020/08/05 Javascript
vue elementui tree 任意级别拖拽功能代码
2020/08/31 Javascript
[01:04:08]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第一场 12.16
2020/12/18 DOTA
Python自定义函数的创建、调用和函数的参数详解
2014/03/11 Python
python 删除指定时间间隔之前的文件实例
2018/04/24 Python
python实发邮件实例详解
2019/11/11 Python
Django 实现xadmin后台菜单改为中文
2019/11/15 Python
python GUI库图形界面开发之PyQt5打印控件QPrinter详细使用方法与实例
2020/02/28 Python
pycharm 2020.2.4 pip install Flask 报错 Error:Non-zero exit code的问题
2020/12/04 Python
佛罗里达州印第安河新鲜水果:Hale Groves
2017/02/20 全球购物
美国孕妇装品牌:Destination Maternity
2018/02/04 全球购物
列车乘务员工作不细心检讨书
2014/10/07 职场文书
公司前台接待岗位职责
2015/04/03 职场文书
摩登时代观后感
2015/06/03 职场文书
投诉信格式范文
2015/07/02 职场文书
运动会报道稿大全
2015/07/23 职场文书
幼儿园教师管理制度
2015/08/05 职场文书
Python必备技巧之字符数据操作详解
2022/03/23 Python