XML DOM 百分网手机站

利用DOM脚本去设置样式的特殊情况

时间:2018-04-20 20:08:58 XML DOM 我要投稿

利用DOM脚本去设置样式的特殊情况

  利用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没办法按要求设置样式来充实页面内容的时候才用。

【利用DOM脚本去设置样式的特殊情况】相关文章:

1.cad打印样式设置

2.CAD如何设置样式

3.关于HTML DOM的简介

4.javascript中的DOM方法

5.CAD中怎么设置标注样式与比例

6.怎么在ppt中设置表格样式

7.word页码样式怎么设置

8.怎样为word样式设置快捷键