通过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增加join方法的实现代码
Nov 28 Javascript
仿谷歌主页js动画效果实现代码
Jul 14 Javascript
浅析用prototype定义自己的方法
Nov 14 Javascript
Jquery实现弹性滑块滑动选择数值插件
Aug 08 Javascript
火狐和ie下获取javascript 获取event的方法(推荐)
Nov 26 Javascript
DropDownList实现可输入可选择(两种版本可选)
Dec 07 Javascript
原生js实现中奖信息无间隙滚动效果
Jan 18 Javascript
jQuery常见面试题之DOM操作详析
Jul 05 jQuery
Javascript中的作用域及块级作用域
Dec 08 Javascript
了解javascript中let和var及const关键字的区别
May 24 Javascript
Vue强制组件重新渲染的方法讨论
Feb 03 Javascript
vue使用echarts画组织结构图
Feb 06 Vue.js
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
eWebEditor v3.8 商业完整版 (PHP)
2006/12/06 PHP
单点登录 Ucenter示例分析
2013/10/29 PHP
php表单加入Token防止重复提交的方法分析
2016/10/10 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
2019/05/09 PHP
Knockoutjs快速入门(经典)
2012/12/24 Javascript
jquery dialog open后,服务器端控件失效的快速解决方法
2013/12/19 Javascript
jquery live()调用不存在的解决方法
2014/02/26 Javascript
原生js获取浏览器窗口及元素宽高常用方法集合
2017/01/18 Javascript
JS控件bootstrap suggest plugin使用方法详解
2017/03/25 Javascript
javascript 开发之网页兼容各种浏览器
2017/09/28 Javascript
JS中利用FileReader实现上传图片前本地预览功能
2018/03/02 Javascript
Express本地测试HTTPS的示例代码
2018/06/06 Javascript
深入理解NodeJS 多进程和集群
2018/10/17 NodeJs
JS滚轮控制图片缩放大小和拖动的实例代码
2018/11/20 Javascript
vue中的v-model原理,与组件自定义v-model详解
2020/08/04 Javascript
详解Python使用simplejson模块解析JSON的方法
2016/03/24 Python
快速查询Python文档方法分享
2017/12/27 Python
Python Socket编程之多线程聊天室
2018/07/28 Python
Python3模拟登录操作实例分析
2019/03/12 Python
Python对象转换为json的方法步骤
2019/04/25 Python
Python-openCV开运算实例
2020/07/05 Python
如何让python的运行速度得到提升
2020/07/08 Python
python获取系统内存占用信息的实例方法
2020/07/17 Python
详解python爬取弹幕与数据分析
2020/11/14 Python
CSS3 完美实现圆角效果
2009/07/13 HTML / CSS
Omio意大利:全欧洲低价大巴、火车和航班搜索和比价
2017/12/02 全球购物
台湾租车首选品牌:IWS艾维士租车
2019/05/03 全球购物
高中毕业自我鉴定
2013/12/22 职场文书
酒店端午节活动方案
2014/08/26 职场文书
班级光棍节联谊会策划书
2014/10/10 职场文书
公司慰问信范文
2015/03/23 职场文书
导游词之新疆-喀纳斯
2019/10/10 职场文书
高一作文之暖冬
2019/11/09 职场文书
详解Python requests模块
2021/06/21 Python
Redis做数据持久化的解决方案及底层原理
2021/07/15 Redis