现在的位置: 首页 > 综合 > 正文

style.display问题

2013年04月04日 ⁄ 综合 ⁄ 共 2876字 ⁄ 字号 评论关闭

style.display的属性在这我就不多说了。。

用得最多的无非是

隐藏:none

显示:block(表示块级)或者是style.display='' 

以下主要是介绍我在使用中遇到的问题

我想实现的效果是利用某个事件来控一个表格的一列隐藏与显示

第一段是错误的代码:原因是div的style.display是块级别的.它和<td>的位置放得不当

<xmp>

<a href="#" onclick="javascript:f_show('1');" />show1</a>
<table>
<tr><th>aa</th><th>bb</th></tr>
<tr>
<div id="node_1_1"><td>a1</td></div>
<div id="child_1" ><td>b1</td></div>
</tr>
<tr>
<div id="node_1_2"><td>a2</td></div>
<div id="child_2" ><td>b2</td></div>
</tr>
</table>
<script language="javascript">
function f_show(num){
switch(num){
case '1':
 var o=document.getElementsByTagName("div");
 for(var i=0;i<o.length;i++){
  var theid=o[i].id;
  if(theid.indexOf("node_1")!=-1){
   document.getElementById(theid).style.display='none';
  }  
 }
// break;
}
}
</script>

</xmp>

以下是经过修改的代码

<xmp>

<a href="#" onclick="javascript:f_show('1');" />show1</a>
<table>
<tr><th><div id="node_1_0">aa</div></th><th>bb</th></tr>
<tr>
<td><div id="node_1_1">a1</div></td>
<td><div id="child_1" >b1</div></td>
</tr>
<tr>
<td><div id="node_1_2">a2</div></td>
<td><div id="child_2" >b2</div></td>
</tr>
</table>
<script language="javascript">
function f_show(num){
switch(num){
case '1':
 var o=document.getElementsByTagName("div");
 for(var i=0;i<o.length;i++){
  var theid=o[i].id;
  if(theid.indexOf("node_1")!=-1){
      if(document.getElementById(theid).style.display=='none'){
   document.getElementById(theid).style.display='block';       
      }
      else{
   document.getElementById(theid).style.display='none'; 
     }
  }  
 }
 break;
}
}
</script>

</xmp>

后来又加了一种类似的实现

<xmp>

<a href="#" onclick="javascript:f_show('1');" />show1</a>

<input type="checkbox" name="chknn" id="chkid" onclick="javascript:f_checkbox();" /> checkbox

<table>
<tr><th><div id="node_1_0">aa</div></th><th><div id="child_1_0">bb</div></th></tr>
<tr>
<td><div id="node_1_1">a1</div></td>
<td><div id="child_1_1" >b1</div></td>
</tr>
<tr>
<td><div id="node_1_2">a2</div></td>
<td><div id="child_1_2" >b2</div></td>
</tr>
</table>
<script language="javascript">
function f_show(num){
switch(num){
case '1':
 var o=document.getElementsByTagName("div");
 for(var i=0;i<o.length;i++){
  var theid=o[i].id;
  var reg=/^node_1/g;
  if(reg.test(theid)){
      if(document.getElementById(theid).style.display=='none'){
   document.getElementById(theid).style.display='block';       
      }
      else{
   document.getElementById(theid).style.display='none'; 
     }
  }  
 }
 break;
}
}
function f_checkbox(){
   // var obj=document.form.chknn;
    var obj=document.getElementById('chkid');
    var o=document.getElementsByTagName('div');
   
         for(var i=0;i<o.length;i++){
  var theid=o[i].id;
  var reg=/^child_1/g;
  if(reg.test(theid)){
                     if(obj.checked==true){
                 document.getElementById(theid).style.display='block';       
                     }
              else{
                 document.getElementById(theid).style.display='none'; 
              }
  } 
 }
    }
</script>

</xmp>

这上面又用了两种不同的方式:

就在处理得到页面上所有div,判断是否是以node_1_开头。一种是利用indexof();另一种是用正则表达式

var reg=/^node_1/g;

if(reg.test(xxx)){

}

抱歉!评论已关闭.