不知道你有没有做过这样的一种效果,一个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>
分享到:
相关推荐
本篇将详细阐述`<table>`、`<td>`(表格数据单元格)及其常见属性,帮助你更好地理解和应用这些基础知识。 首先,我们来了解`<table>`元素。`<table>`是HTML中定义表格的根元素,它包含了表格的整个结构,包括表头...
首先,`colspan` 属性是表格单元格`<td>`或表头单元格`<th>`的一个属性,它的全称是“列跨度”。通过设置 `colspan` 的值,我们可以让一个单元格跨越多个列。例如,如果一个单元格的 `colspan="2"`,那么这个单元格...
在HTML表格中,`colspan`属性是一个非常实用的功能,它允许表格中的单元格跨越多列显示。这对于创建复杂、灵活的表格布局非常有用。接下来,我们将详细介绍`colspan`属性的基本概念、用法以及一些实际应用场景。 ##...
论坛中可以用表格来显示用户信息,门户网站可以用表格来显示新闻、天气预报等信息,购物网站可以用表格来显示商品信息。 表格的基本结构 表格的基本结构由行、列、单元格组成。行由 TR 标签定义,列由 TH 或 TD ...
$('table tbody').prepend('<tr><td colspan="2">暂无数据</td></tr>'); break; case '1': $.each(data.data, function(i, n) { var $tr = $("<tr>" + "<td>" + n.year + "</td>" + "<td>" + n.province + ...
CSS `display` 属性是CSS布局中的关键属性,它用于定义元素如何在页面上呈现。当设置为 `table` 相关值时,`display` 属性可以将元素转换为表格布局,使得我们可以利用表格的特性来组织内容,即使这些元素原本不是...
<TD colspan="2">办公设备、文具、耗材</TD> </TR> <TR> <TD>惠普</TD> <TD>华硕</TD> <TD>打印机</TD> <TD>刻录盘</TD> </TR> 六、小结 本章节介绍了HTML制作表格的相关知识点,包括表格的基本结构、...
代码如下:$(“#tableName td:not([colspan])”)下面是一些补充资料:filter()和not(): [removed] $(document).ready(function() { //输出 hello alert($(“p”).filter(“.selected”).html()); //输出 How ...
- **使用`display: table-row`**:在Firefox等支持CSS `display: table-row`属性的浏览器中,可以有效地解决上述问题,因为它能保持表格的原有布局。但是,Internet Explorer(尤其是较旧版本)并不支持这一属性。...
<td colspan="2" align="center"> 第二行的单元格 </td> </tr> <tr > <td> 第一行的单元格 </td> <td> 第二行的单元格 </td> <td> 第三行的单元格 </td> </tr> </table>
为了实现跨行跨列显示,我们可以使用`colspan`和`rowspan`属性。例如,如果一个单元格需要跨越两列,我们可以这样设置: ```html <td colspan="2">跨两列的单元格</td> ``` 同样的,如果一个单元格需要跨越两行,...
<TD colSpan=4> </TD> </TR> <TR height=30> <TD width=380> </TD> <TD> </TD> <TD> </TD> <TD> </TD> </TR> <TR height=40> <TD rowSpan=4> </TD> <TD>用户名:...
colspan 属性通常使用在 td 和 th 标签中。例如: ```html <tr> <th>xuexuexi.com</th> <th>SEO 学习 <th>SEM 技术 </tr> <tr> <td>SEM 技术</td> <td>网络营销学习</td> <td colspan="2">网络营销</td> ...
代码片段: <tr class="info"> <td>姓名</td> ...<td>性别</td> ...<td>年龄</td> ...<td>电话</td> ...<td>操作</td> ...</tr> ...<td colspan="5" class="danger">增加</button></td> </tr> </table>
<td colspan="2" style="height: 23px"> </td> </tr> <tr> <td colspan="2" style="height: 23px"> <strong><span style="font-size: 14pt; color: #0000cc">请留下你宝贵的观点,有你支持我们将做的更好!...
<TD vAlign=top background=/images/bg_1.jpg colSpan=10> <TABLE cellSpacing=3 cellPadding=0 width="100%" border=0><TBODY> <TR> <TD width="95%" height=1216> ...
首先,表格的基本结构由`<table>`标签定义,内部包含`<tr>`(行)和`<td>`(单元格)或`<th>`(表头单元格)标签。例如,一个简单的表格可以这样创建: ```html <tr> 姓名 性别 学号 </tr> <tr> <td>王平</...
在实际开发中,学习`<td>`标签时,应特别关注`colspan`和`rowspan`属性,它们对于创建复杂的表格布局至关重要。其他属性如`width`、`height`、`align`、`valign`等虽然也可以使用,但现代网页设计更推荐使用CSS进行...