通过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 相关文章推荐
基于jquery封装的一个js分页
Nov 15 Javascript
使用js的replace()方法查找字符示例代码
Oct 28 Javascript
TypeScript 学习笔记之基本类型
Jun 19 Javascript
JavaScript实现ASC转汉字及汉字转ASC的方法
Jan 23 Javascript
JS区分浏览器页面是刷新还是关闭
Apr 17 Javascript
jQuery Ajax 实现分页 kkpager插件实例代码
Aug 10 jQuery
基于Vue 2.0的模块化前端 UI 组件库小结
Dec 21 Javascript
Bootstrap Table实现定时刷新数据的方法
Aug 13 Javascript
jQuery+CSS实现的标签页效果示例【测试可用】
Aug 14 jQuery
layui table 表格模板按钮的实例代码
Sep 21 Javascript
webpack常用构建优化策略小结
Nov 21 Javascript
微信小程序反编译的实现
Dec 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中error_reporting()函数的用法(修改PHP屏蔽错误)
2011/07/01 PHP
如何使用PHP对网站验证码进行破解
2015/09/17 PHP
PHP程序员简单的开展服务治理架构操作详解(三)
2020/05/14 PHP
农历与西历对照
2006/09/06 Javascript
基于jQuery实现的Ajax 验证用户名是否存在的实现代码
2011/04/06 Javascript
JavaScript利用正则表达式去除日期中的-
2014/06/09 Javascript
Javascript中数组sort和reverse用法分析
2014/12/30 Javascript
jQuery中position()方法用法实例
2015/01/16 Javascript
Javascript中数组方法汇总(推荐)
2015/04/01 Javascript
js实现键盘Enter键提交表单的方法
2015/05/27 Javascript
根据user-agent判断蜘蛛代码黑帽跳转代码(js版与php版本)
2015/09/14 Javascript
Bootstrap中的fileinput 多图片上传及编辑功能
2016/09/05 Javascript
Web前端框架bootstrap实战【第一次接触使用】
2016/12/28 Javascript
Javascript 实现计算器时间功能详解及实例(二)
2017/01/08 Javascript
jQuery+HTML5实现WebGL高性能烟花绽放动画效果【附demo源码下载】
2017/08/18 jQuery
详解微信小程序-扫一扫 wx.scanCode() 扫码大变身
2019/04/30 Javascript
vue远程加载sfc组件思路详解
2019/12/25 Javascript
nodejs使用socket5进行代理请求的实现
2020/02/21 NodeJs
Selenium执行JavaScript脚本的方法示例
2020/12/31 Javascript
[55:35]VGJ.S vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
Python二维码生成库qrcode安装和使用示例
2014/12/16 Python
玩转python爬虫之URLError异常处理
2016/02/17 Python
浅谈Python的垃圾回收机制
2016/12/17 Python
详解Django-auth-ldap 配置方法
2018/12/10 Python
浅谈python编译pyc工程--导包问题解决
2019/03/20 Python
python_mask_array的用法
2020/02/18 Python
解决Python图形界面中设置尺寸的问题
2020/03/05 Python
使用Python内置模块与函数进行不同进制的数的转换
2020/04/26 Python
Python中Pyspider爬虫框架的基本使用详解
2021/01/27 Python
html5响应式开发自动计算fontSize的方法
2020/01/13 HTML / CSS
内部类的定义、种类以及优点
2013/10/16 面试题
小学班主任寄语大全
2014/04/04 职场文书
代办委托书怎样写
2014/04/08 职场文书
文秘专业应届生求职信
2014/05/26 职场文书
领导班子“四风问题”“整改方案
2014/10/02 职场文书
法律意见书范文
2015/06/04 职场文书