`
maysnow
  • 浏览: 16792 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

tr 的显示隐藏display属性导致firefox 的td colspan问题(ZT)

    博客分类:
  • html
阅读更多
不知道你有没有做过这样的一种效果,一个table中的一个连接,javascript 控制 tr 的显示隐藏,来达到显示更多数据的效果。如果没做过,尝试一下吧,你会发现,table中隐藏的tr的含有colspan的td 在再次显示以后,firefox会把内容合并到 第一个td里。

有点绕,把下面的代码copy以后另存为.html 打开 就知道我说的是什么问题了。锻炼自己的动手能力,我就不贴图了,想知道原因跟解决办法就看下去吧。
01	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
02	<html xmlns="http://www.w3.org/1999/xhtml">
03	<head>
04	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
05	<title>tr 的显示隐藏display属性导致td colspan问题--imouou.com</title>
06	<link href="" type="text/css" rel="stylesheet" ></link>
07	<style>
08	    #table {width:80%;border:1px solid #ccc;border-collapse:collapse;}
09	    #table td{border-right:1px solid #ccc;border-bottom:1px solid #ccc;}
10	</style>
11	 
12	</head>
13	 
14	 <body>
15	  <table id="table">
16	    <tr>
17	        <td>1</td>
18	        <td>2</td>
19	        <td>3</td>
20	        <td>4</td>
21	        <td>5</td>
22	        <td><a href="#" id="view" class="view">查看</a></td>
23	    </tr>
24	    <tr id="dis">
25	        <td>1</td>
26	        <td colspan="6">这里的信息默认是合并了6列的效果,</td>
27	    </tr>
28	    <tr>
29	        <td>1</td>
30	        <td>2</td>
31	        <td>3</td>
32	        <td>4</td>
33	        <td>5</td>
34	        <td><a href="#" id="view" class="view">查看</a></td>
35	    </tr>
36	    <tr id="dis2" style="display:block;">
37	        <td>第一个td</td>
38	        <td colspan="6">当display等于 block 或者 inline 以后,这里在firefox的效果会变成跟 “第一个td” 在一起,然后这里为空</td>
39	    </tr>
40	  </table>
41	 </body>
42	</html>

通过 class 为view的链接,显示隐藏 id 为 dis 的tr ,当tr的属性为 display:block 或者 display:inline 的时候,firefox就会出现显示错误了。 这个究竟是什么原因引起的?我用jquery的 show();hide();来控制显示时,就没有这个问题。看了jquery1.3.2的第3785行show() 函数,里面除了设置它的display属性以外,还多了一个elem.remove();不知道是不是跟这个有关。
01	if ( elemdisplay[ tagName ] ) {
02	    display = elemdisplay[ tagName ];
03	} else {
04	    var elem = jQuery("<" + tagName + " />").appendTo("body");
05	 
06	    display = elem.css("display");
07	    if ( display === "none" )
08	        display = "block";
09	 
10	        elem.remove();
11	 
12	    elemdisplay[ tagName ] = display;
13	}

是table的块元素引起的吗?那怎么inline了以后也会?后来查到csdn有篇文章,好像是firefox的display:block有缓存,那是不是跟上面的elem.remove()也是一样的?display:”没有参数的时候,默认是显示元素,我把应该显示的 display:block 改为 display:” ;解决了firefox的colspan这个问题。但是为什么会这样,还是一知半解,你知道吗?

jquery的demo
01	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
02	<html xmlns="http://www.w3.org/1999/xhtml">
03	<head>
04	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
05	<title>tr 的显示隐藏display属性导致td colspan问题--imouou.com</title>
06	<link href="" type="text/css" rel="stylesheet" ></link>
07	<style>
08	    #table {width:80%;border:1px solid #ccc;border-collapse:collapse;}
09	    #table td{border-right:1px solid #ccc;border-bottom:1px solid #ccc;}
10	</style>
11	<script src="http://www.imouou.com/js/jquery.js" type="text/Javascript" ></script>
12	 
13	<script>
14	    $(function(){
15	         $("#view").toggle(function(){
16	            $("#dis").show();
17	         },function(){
18	            $("#dis").hide();
19	         })
20	    })
21	</script>
22	</head>
23	 
24	 <body>
25	  <table id="table">
26	    <tr>
27	        <td>1</td>
28	        <td>2</td>
29	        <td>3</td>
30	        <td>4</td>
31	        <td>5</td>
32	        <td><a href="#" id="view" class="view">查看</a></td>
33	    </tr>
34	    <tr id="dis" style="display:none;">
35	        <td>1</td>
36	        <td colspan="6">这里的信息默认是合并了6列的效果,当display等于 block 或者 inline 以后,这里在firefox的效果会变成跟 1 在一起,然后这里为空</td>
37	    </tr>
38	  </table>
39	 </body>
40	</html>
分享到:
评论
3 楼 SunsetGrace1 2012-03-13  
SunsetGrace1 写道
我也遇到了,解决方法如下
var display=$('#'+attendlistid).attr('class');
   if(display=="hidden"){
      $('#'+attendlistid).show();
      $('#'+attendlistid).removeClass(display).addClass("show");//已失效,起作用的只是show(),只是作为显示隐藏的条件判断用,为了FF下clospan合并为1个单元格的问题
    }else{
      $('#'+attendlistid).hide();
      $('#'+attendlistid).removeClass(display).addClass("hidden");
    }

2 楼 SunsetGrace1 2012-03-13  
我也遇到了,解决方法如下
var display=$('#'+attendlistid).attr('class');
               
                if(display=="hidden"){
                    $('#'+attendlistid).show();
                    $('#'+attendlistid).removeClass(display).addClass("show");//已失效,起作用的只是show(),只是作为显示隐藏的条件判断用,为了FF下clospan合并为1个单元格的问题
                    $('#attendbtn_'+courseid).val('<%=user.get("ht.university.attendlistbtnhide")%>');
                }else{
                    $('#'+attendlistid).hide();
                    $('#'+attendlistid).removeClass(display).addClass("hidden");
                    $('#attendbtn_'+courseid).val('<%=user.get("ht.university.attendlistbtn")%>');
                }
1 楼 zhaoxiu_1945 2011-11-03  
。。。 你现在知道什么原因了吗,我按照你的方法解决了问题,但是这是问什么啊

相关推荐

    web程序设计 表格 其中包含table td td常见的属性

    本篇将详细阐述`&lt;table&gt;`、`&lt;td&gt;`(表格数据单元格)及其常见属性,帮助你更好地理解和应用这些基础知识。 首先,我们来了解`&lt;table&gt;`元素。`&lt;table&gt;`是HTML中定义表格的根元素,它包含了表格的整个结构,包括表头...

    colspan和rowspan

    首先,`colspan` 属性是表格单元格`&lt;td&gt;`或表头单元格`&lt;th&gt;`的一个属性,它的全称是“列跨度”。通过设置 `colspan` 的值,我们可以让一个单元格跨越多个列。例如,如果一个单元格的 `colspan="2"`,那么这个单元格...

    colspan使用方法

    在HTML表格中,`colspan`属性是一个非常实用的功能,它允许表格中的单元格跨越多列显示。这对于创建复杂、灵活的表格布局非常有用。接下来,我们将详细介绍`colspan`属性的基本概念、用法以及一些实际应用场景。 ##...

    HTML制作表格ppt课件.ppt

    论坛中可以用表格来显示用户信息,门户网站可以用表格来显示新闻、天气预报等信息,购物网站可以用表格来显示商品信息。 表格的基本结构 表格的基本结构由行、列、单元格组成。行由 TR 标签定义,列由 TH 或 TD ...

    jQuery+ajax实现动态添加表格tr td功能示例

    $('table tbody').prepend('&lt;tr&gt;&lt;td colspan="2"&gt;暂无数据&lt;/td&gt;&lt;/tr&gt;'); break; case '1': $.each(data.data, function(i, n) { var $tr = $("&lt;tr&gt;" + "&lt;td&gt;" + n.year + "&lt;/td&gt;" + "&lt;td&gt;" + n.province + ...

    CSS display属性的table表格布局

    CSS `display` 属性是CSS布局中的关键属性,它用于定义元素如何在页面上呈现。当设置为 `table` 相关值时,`display` 属性可以将元素转换为表格布局,使得我们可以利用表格的特性来组织内容,即使这些元素原本不是...

    HTML制作表格.ppt

    &lt;TD colspan="2"&gt;办公设备、文具、耗材&lt;/TD&gt; &lt;/TR&gt; &lt;TR&gt; &lt;TD&gt;惠普&lt;/TD&gt; &lt;TD&gt;华硕&lt;/TD&gt; &lt;TD&gt;打印机&lt;/TD&gt; &lt;TD&gt;刻录盘&lt;/TD&gt; &lt;/TR&gt; 六、小结 本章节介绍了HTML制作表格的相关知识点,包括表格的基本结构、...

    jQuery选择没有colspan属性的td的代码

    代码如下:$(“#tableName td:not([colspan])”)下面是一些补充资料:filter()和not(): [removed] $(document).ready(function() { //输出 hello alert&#40;$(“p”&#41;.filter(“.selected”).html()); //输出 How ...

    js style.display=block显示布局错乱问题的解决方法

    - **使用`display: table-row`**:在Firefox等支持CSS `display: table-row`属性的浏览器中,可以有效地解决上述问题,因为它能保持表格的原有布局。但是,Internet Explorer(尤其是较旧版本)并不支持这一属性。...

    html表格<table></table>

    &lt;td colspan="2" align="center"&gt; 第二行的单元格 &lt;/td&gt; &lt;/tr&gt; &lt;tr &gt; &lt;td&gt; 第一行的单元格 &lt;/td&gt; &lt;td&gt; 第二行的单元格 &lt;/td&gt; &lt;td&gt; 第三行的单元格 &lt;/td&gt; &lt;/tr&gt; &lt;/table&gt;

    H5-js-表格跨行跨列显示,点击事件单独显示行或者列

    为了实现跨行跨列显示,我们可以使用`colspan`和`rowspan`属性。例如,如果一个单元格需要跨越两列,我们可以这样设置: ```html &lt;td colspan="2"&gt;跨两列的单元格&lt;/td&gt; ``` 同样的,如果一个单元格需要跨越两行,...

    登录页面html

    &lt;TD colSpan=4&gt;&nbsp;&lt;/TD&gt; &lt;/TR&gt; &lt;TR height=30&gt; &lt;TD width=380&gt;&nbsp;&lt;/TD&gt; &lt;TD&gt;&nbsp;&lt;/TD&gt; &lt;TD&gt;&nbsp;&lt;/TD&gt; &lt;TD&gt;&nbsp;&lt;/TD&gt; &lt;/TR&gt; &lt;TR height=40&gt; &lt;TD rowSpan=4&gt;&nbsp;&lt;/TD&gt; &lt;TD&gt;用户名:...

    html表格——表格合并.docx

    colspan 属性通常使用在 td 和 th 标签中。例如: ```html &lt;tr&gt; &lt;th&gt;xuexuexi.com&lt;/th&gt; &lt;th&gt;SEO 学习 &lt;th&gt;SEM 技术 &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;SEM 技术&lt;/td&gt; &lt;td&gt;网络营销学习&lt;/td&gt; &lt;td colspan="2"&gt;网络营销&lt;/td&gt; ...

    自适应PC手机端的C3 jQuery可编辑表格代码.zip

    代码片段: &lt;tr class="info"&gt; &lt;td&gt;姓名&lt;/td&gt; ...&lt;td&gt;性别&lt;/td&gt; ...&lt;td&gt;年龄&lt;/td&gt; ...&lt;td&gt;电话&lt;/td&gt; ...&lt;td&gt;操作&lt;/td&gt; ...&lt;/tr&gt; ...&lt;td colspan="5" class="danger"&gt;增加&lt;/button&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/table&gt;

    asp.net简单程序

    &lt;td colspan="2" style="height: 23px"&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td colspan="2" style="height: 23px"&gt; &lt;strong&gt;&lt;span style="font-size: 14pt; color: #0000cc"&gt;请留下你宝贵的观点,有你支持我们将做的更好!...

    JSP+Struts+JSTL+EL新闻发布系统jsp

    &lt;TD vAlign=top background=/images/bg_1.jpg colSpan=10&gt; &lt;TABLE cellSpacing=3 cellPadding=0 width="100%" border=0&gt;&lt;TBODY&gt; &lt;TR&gt; &lt;TD width="95%" height=1216&gt; ...

    HTML制作表格PPT教案.pptx

    首先,表格的基本结构由`&lt;table&gt;`标签定义,内部包含`&lt;tr&gt;`(行)和`&lt;td&gt;`(单元格)或`&lt;th&gt;`(表头单元格)标签。例如,一个简单的表格可以这样创建: ```html &lt;tr&gt; 姓名 性别 学号 &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;王平&lt;/...

    使用HTML开发商业网站-td标签属性课件.pptx

    在实际开发中,学习`&lt;td&gt;`标签时,应特别关注`colspan`和`rowspan`属性,它们对于创建复杂的表格布局至关重要。其他属性如`width`、`height`、`align`、`valign`等虽然也可以使用,但现代网页设计更推荐使用CSS进行...

Global site tag (gtag.js) - Google Analytics