通过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 相关文章推荐
JavaScript之HTMLCollection接口代码
Apr 27 Javascript
js 幻灯片的实现
Dec 06 Javascript
js实现同一页面多个不同运动效果的方法
Apr 10 Javascript
jquery+html5烂漫爱心表白动画代码分享
Aug 24 Javascript
最实用的jQuery分页插件
Oct 09 Javascript
require.js 加载 vue组件 r.js 合并压缩的实例
Oct 14 Javascript
jQuery实现字符串全部替换的方法【推荐】
Mar 09 Javascript
vue-resource + json-server模拟数据的方法
Nov 02 Javascript
AngularJS select加载数据选中默认值的方法
Feb 28 Javascript
JavaScript 中的 this 工作原理
Jun 20 Javascript
JavaScript中this的全面解析及常见实例
May 14 Javascript
利用uni-app生成微信小程序的踩坑记录
Apr 05 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下安装配置fckeditor编辑器的方法
2011/03/02 PHP
php高级编程-函数-郑阿奇
2011/07/04 PHP
PHP按行读取文件时删除换行符的3种方法
2014/05/04 PHP
什么情况下可以不写PHP的闭合标签“?&gt;”
2014/08/28 PHP
必须收藏的php实用代码片段
2016/02/02 PHP
PHP中STDCLASS用法实例分析
2016/11/11 PHP
cnblogs csdn 代码运行框实现代码
2009/11/02 Javascript
json数据的列循环示例
2013/09/06 Javascript
JavaScript设计模式之建造者模式介绍
2014/12/28 Javascript
jqueryUI里拖拽排序示例分析
2015/02/26 Javascript
JavaScript setTimeout使用闭包功能实现定时打印数值
2015/12/18 Javascript
jquery插件之文字间歇自动向上滚动效果代码
2016/02/25 Javascript
浅谈JS中json数据的处理
2016/06/30 Javascript
使用Bootstrap Tabs选项卡Ajax加载数据实现
2016/12/23 Javascript
javascript验证香港身份证的格式或真实性
2017/02/07 Javascript
Nodejs实现文件上传的示例代码
2017/09/26 NodeJs
vue操作下拉选择器获取选择的数据的id方法
2018/08/24 Javascript
JavaScript ECMA-262-3 深入解析(二):变量对象实例详解
2020/04/25 Javascript
用Javascript实现发送短信验证码间隔功能
2021/02/08 Javascript
[06:30]DOTA2英雄梦之声_第15期_死亡先知
2014/06/21 DOTA
[55:48]VGJ.S vs TNC Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
使用Python读写及压缩和解压缩文件的示例
2016/07/08 Python
python进程管理工具supervisor的安装与使用教程
2017/09/05 Python
浅谈python实现Google翻译PDF,解决换行的问题
2018/11/28 Python
Python检查图片是否损坏及图片类型是否正确过程详解
2019/09/30 Python
python读取xml文件方法解析
2020/08/04 Python
HTML5无刷新改变当前url的代码
2017/03/15 HTML / CSS
初中生三年学习生活的自我评价
2013/11/03 职场文书
秋季红领巾广播稿
2014/01/27 职场文书
三爱活动实施方案
2014/03/19 职场文书
促销活动总结模板
2014/07/01 职场文书
运动会广播稿200米(5篇)
2014/10/15 职场文书
2015教师见习期工作总结
2014/12/12 职场文书
分家协议书范本
2016/03/22 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书
动画「半妖的夜叉姬」新BD特典图公开
2022/03/22 日漫