通过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 相关文章推荐
关于图片验证码设计的思考
Jan 29 Javascript
img标签中onerror用法
Aug 13 Javascript
jQuery级联操作绑定事件实例
Sep 02 Javascript
js对象基础实例分析
Jan 13 Javascript
jQuery实现表格行上下移动和置顶效果
Jun 05 Javascript
javascript实现超炫的向上滑行菜单实例
Aug 03 Javascript
js调用父框架函数与弹窗调用父页面函数的简单方法
Nov 01 Javascript
jQuery实现注册会员时密码强度提示信息功能示例
Sep 05 jQuery
vue项目实战总结篇
Feb 11 Javascript
vue中$refs的用法及作用详解
Apr 24 Javascript
详解从0开始搭建微信小程序(前后端)的全过程
Apr 15 Javascript
jquery实现Ajax请求的几种常见方式总结
May 28 jQuery
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
基于Linux调试工具strace与gdb的常用命令总结
2013/06/03 PHP
Zend Framework入门教程之Zend_Config组件用法详解
2016/12/09 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
2017/07/27 PHP
laravel 根据不同组织加载不同视图的实现
2019/10/14 PHP
LazyLoad 延迟加载(按需加载)
2010/05/31 Javascript
来自国外的14个图片放大编辑的jQuery插件整理
2010/10/20 Javascript
zTree插件之单选下拉菜单实例代码
2013/11/07 Javascript
jqueyr判断checkbox组的选中(示例代码)
2013/11/08 Javascript
Extjs中RowExpander控件的默认展开问题示例探讨
2014/01/24 Javascript
Bootstrap在线电子商务网站实战项目5
2016/10/14 Javascript
解决ajax不能访问本地文件问题(利用js跨域原理)
2017/01/24 Javascript
NodeJs模拟登陆正方教务
2017/04/28 NodeJs
JS时间控制实现动态效果的实例讲解
2017/07/31 Javascript
浅谈react前后端同构渲染
2017/09/20 Javascript
动态加载权限管理模块中的Vue组件
2018/01/16 Javascript
Vuejs 单文件组件实例详解
2018/02/09 Javascript
浅谈Koa2框架利用CORS完成跨域ajax请求
2018/03/06 Javascript
python3 与python2 异常处理的区别与联系
2016/06/19 Python
分析python切片原理和方法
2017/12/19 Python
对numpy中数组元素的统一赋值实例
2018/04/04 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
2018/06/14 Python
Pandas_cum累积计算和rolling滚动计算的用法详解
2019/07/04 Python
pycharm中显示CSS提示的知识点总结
2019/07/29 Python
python 模拟银行转账功能过程详解
2019/08/06 Python
Softmax函数原理及Python实现过程解析
2020/05/22 Python
手把手教你配置JupyterLab 环境的实现
2021/02/02 Python
奥兰多迪士尼门票折扣:Undercover Tourist
2018/07/09 全球购物
运动会致辞稿50字
2014/02/04 职场文书
高中生学期学习自我评价
2014/02/24 职场文书
事业单位分类改革实施方案
2014/03/21 职场文书
施工安全责任书
2014/04/14 职场文书
通信工程求职信
2014/07/16 职场文书
2014年班级工作总结范文
2014/12/23 职场文书
入学证明
2015/06/23 职场文书
遗嘱格式范本
2015/08/07 职场文书
JavaScript中的LHS和RHS分析详情
2022/04/06 Javascript