通过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 相关文章推荐
15款优秀的jQuery导航菜单插件分享
Jul 19 Javascript
js获取json元素数量的方法
Jan 27 Javascript
javascript结合Flexbox简单实现滑动拼图游戏
Feb 18 Javascript
js手动播放图片实现图片轮播效果
Sep 17 Javascript
Vue-Router实现页面正在加载特效方法示例
Feb 12 Javascript
微信小程序分享功能之按钮button 边框隐藏和点击隐藏
Jun 14 Javascript
vue-cli项目中使用echarts图表实例
Oct 22 Javascript
Vue scrollBehavior 滚动行为实现后退页面显示在上次浏览的位置
May 27 Javascript
Layui Table js 模拟选中checkbox的例子
Sep 03 Javascript
vue实现分页加载效果
Dec 24 Javascript
15个简单的JS编码标准让你的代码更整洁(小结)
Jul 16 Javascript
JavaScript声明变量和数据类型的转换
Apr 12 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动态生成虚拟现实VRML网页
2006/10/09 PHP
PHP性能优化 产生高度优化代码
2011/07/22 PHP
遍历指定目录下的所有目录和文件的php代码
2011/11/27 PHP
个人写的PHP验证码生成类分享
2014/08/21 PHP
php通过排列组合实现1到9数字相加都等于20的方法
2015/08/03 PHP
深入讲解PHP Session及如何保持其不过期的方法
2015/08/18 PHP
模拟多级复选框效果的jquery代码
2013/08/13 Javascript
两个数组去重的JS代码
2013/12/04 Javascript
js计算德州扑克牌面值的方法
2015/03/04 Javascript
jQuery幻灯片特效代码分享--鼠标滑过按钮时切换(2)
2020/11/18 Javascript
JavaScript中removeChild 方法开发示例代码
2016/08/15 Javascript
微信+angularJS的SPA应用中用router进行页面跳转,jssdk校验失败问题解决
2016/09/09 Javascript
Vue2.0使用过程常见的一些问题总结学习
2017/04/10 Javascript
ES6正则表达式的一些新功能总结
2017/05/09 Javascript
js每隔两秒输出数组中的一项(实例)
2017/05/28 Javascript
详解vue服务端渲染(SSR)初探
2017/06/19 Javascript
完美解决手机浏览器顶部下拉出现网页源或刷新的问题
2017/11/30 Javascript
JS实现前端动态分页码代码实例
2020/06/02 Javascript
[05:40]DOTA2荣耀之路6:Wings最后进攻
2018/05/30 DOTA
[03:12]完美世界DOTA2联赛PWL DAY6集锦
2020/11/05 DOTA
Python中dictionary items()系列函数的用法实例
2014/08/21 Python
python logging类库使用例子
2014/11/22 Python
简单介绍Python的Django框架加载模版的方式
2015/07/20 Python
一张图带我们入门Python基础教程
2017/02/05 Python
Python class的继承方法代码实例
2020/02/14 Python
将labelme格式数据转化为标准的coco数据集格式方式
2020/02/17 Python
TensorFlow打印输出tensor的值
2020/04/19 Python
Otticanet美国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/03/10 全球购物
美国家庭鞋店:Shoe Sensation
2019/09/27 全球购物
怎样声明一个匿名的内部类
2016/06/01 面试题
写好自荐信需做到的5要点
2014/03/07 职场文书
教师党员公开承诺事项
2014/05/28 职场文书
大学生创业计划书怎么写
2014/09/15 职场文书
社会实践单位意见
2015/06/05 职场文书
小学三年级班主任工作经验交流材料
2015/11/02 职场文书
个人的事迹材料怎么写
2019/04/24 职场文书