style.display问题

本文介绍了一个使用JavaScript控制表格中特定列显示与隐藏的例子。通过点击链接或勾选复选框触发事件,利用JavaScript动态更改元素的display属性实现效果。演示了如何使用indexOf()和正则表达式来匹配元素ID。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)){

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值