通过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 相关文章推荐
js监听表单value的修改同步问题,跨浏览器支持
Dec 31 Javascript
JavaScript正则表达式中的ignoreCase属性使用详解
Jun 16 Javascript
jquery实现鼠标滑过小图查看大图的方法
Jul 20 Javascript
基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)
Nov 24 Javascript
AngularJS实现按钮提示与点击变色效果
Sep 07 Javascript
移动端js触摸事件详解
Sep 18 Javascript
JS实现旋转木马式图片轮播效果
Jan 18 Javascript
详解vue.js之绑定class和style的示例代码
Aug 24 Javascript
windows下create-react-app 升级至3.3.1版本踩坑记
Feb 17 Javascript
js实现选项卡效果
Mar 07 Javascript
js实现翻牌小游戏
Jul 31 Javascript
js+h5 canvas实现图片验证码
Oct 11 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
关于我转生变成史莱姆这档事:第二季PV上线,萌王2021年回归
2020/05/06 日漫
PHP学习之PHP运算符
2006/10/09 PHP
PHP用星号隐藏部份用户名、身份证、IP、手机号等实例
2014/04/08 PHP
jquery checkbox实现单选小例
2013/11/27 Javascript
iframe窗口高度自适应的又一个巧妙实现思路
2014/04/04 Javascript
动态加载jQuery的两种方法实例分析
2015/07/17 Javascript
Hallo.js基于jQuery UI所见即所得的Web编辑器
2016/01/26 Javascript
详解JavaScript的另类写法
2016/04/11 Javascript
微信小程序wx.previewImage预览图片实例详解
2017/12/07 Javascript
axios 处理 302 状态码的解决方法
2018/04/10 Javascript
jQuery创建及操作xml格式数据示例
2018/05/26 jQuery
jQuery实现获取及设置CSS样式操作详解
2018/09/05 jQuery
用vscode开发vue应用的方法步骤
2019/05/06 Javascript
使vue实现jQuery调用的两种方法
2019/05/12 jQuery
微信小程序云开发之模拟后台增删改查
2019/05/16 Javascript
原生JS使用Canvas实现拖拽式绘图功能
2019/06/05 Javascript
Vue中遍历数组的新方法实例详解
2019/07/21 Javascript
浅谈Vue.set实际上是什么
2019/10/17 Javascript
vue.js路由mode配置之去掉url上默认的#方法
2019/11/01 Javascript
JavaScript实现多个物体同时运动
2020/03/12 Javascript
如何实现js拖拽效果及原理解析
2020/05/08 Javascript
python库matplotlib绘制坐标图
2019/10/18 Python
python输出第n个默尼森数的实现示例
2020/03/08 Python
Python Json数据文件操作原理解析
2020/05/09 Python
完美解决keras 读取多个hdf5文件进行训练的问题
2020/07/01 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
2021/03/04 Python
彪马加拿大官网:PUMA加拿大
2018/10/04 全球购物
Jones New York官网:美国女装品牌,受白领女性欢迎
2019/11/26 全球购物
出生公证委托书
2014/04/03 职场文书
机关驾驶员违规检讨书
2014/09/13 职场文书
公司员工离职证明书
2014/10/04 职场文书
运动会广播稿200字(10篇)
2014/10/12 职场文书
涉及车辆房产分割的离婚协议书范文
2014/10/12 职场文书
追悼会答谢词
2015/01/05 职场文书
节水倡议书
2015/01/19 职场文书
教师学期个人总结
2015/02/11 职场文书