通过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中html()方法使用不当带来的陷阱
Apr 07 Javascript
ASP.NET中AJAX 调用实例代码
May 03 Javascript
event.currentTarget与event.target的区别介绍
Dec 31 Javascript
文字溢出实现溢出的部分再放入一个新生成的div中具体代码
May 17 Javascript
JavaScript中getUTCMinutes()方法的使用详解
Jun 10 Javascript
js简单判断flash是否加载完成的方法
Jun 21 Javascript
利用Javascript获取选择文本所在的句子详解
Dec 03 Javascript
详解vue 项目白屏解决方案
Oct 31 Javascript
puppeteer实现html截图的示例代码
Jan 10 Javascript
Vue侦测相关api的实现方法
May 22 Javascript
JavaScript函数柯里化实现原理及过程
Dec 02 Javascript
JavaScript如何优化逻辑判断代码详解
Jun 08 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
下载文件的点击数回填
2006/10/09 PHP
实用函数2
2007/11/08 PHP
使用php判断服务器是否支持Gzip压缩功能
2013/09/24 PHP
PHP写的资源下载防盗链类分享
2014/05/12 PHP
Yii2 rbac权限控制操作步骤实例教程
2016/04/29 PHP
php多进程模拟并发事务产生的问题小结
2018/12/07 PHP
MSN消息提示类
2006/09/05 Javascript
ie下$.getJSON出现问题的解决方法
2014/02/12 Javascript
javascript修改图片src的方法
2015/01/27 Javascript
JavaScript对象反射用法实例
2015/04/17 Javascript
详细介绍jQuery.outerWidth() 函数具体用法
2015/07/20 Javascript
基于jquery实现简单的手风琴特效
2015/11/24 Javascript
jQuery对html元素的取值与赋值实例详解
2015/12/18 Javascript
javascript阻止事件冒泡和浏览器的默认行为
2017/01/21 Javascript
js模拟微博发布消息
2017/02/23 Javascript
基于jQuery实现的Ajax 验证用户名唯一性实例代码
2017/06/28 jQuery
EasyUI的DataGrid每行数据添加操作按钮的实现代码
2017/08/22 Javascript
vue中父子组件注意事项,传值及slot应用技巧
2018/05/09 Javascript
Vue EventBus自定义组件事件传递
2018/06/25 Javascript
JS数组实现分类统计实例代码
2018/09/30 Javascript
angularjs1.5 组件内用函数向外传值的实例
2018/09/30 Javascript
微信小程序实现侧边分类栏
2019/10/21 Javascript
微信小程序 scroll-view 实现锚点跳转功能
2019/12/12 Javascript
Node.js API详解之 dgram模块用法实例分析
2020/06/05 Javascript
python使用 zip 同时迭代多个序列示例
2019/07/06 Python
python二元表达式用法
2019/12/04 Python
Python序列类型的打包和解包实例
2019/12/21 Python
Python写捕鱼达人的游戏实现
2020/03/31 Python
高一家长会邀请函
2014/01/12 职场文书
小学生开学第一课活动方案
2014/03/27 职场文书
党员学习正风肃纪思想汇报
2014/09/12 职场文书
2015教师个人师德工作总结
2015/10/23 职场文书
医生行业员工的辞职信
2019/06/24 职场文书
pandas中DataFrame检测重复值的实现
2021/05/26 Python
利用python进行数据加载
2021/06/20 Python
Python经常使用的一些内置函数
2022/04/11 Python