当前位置: 首页 > 图文教程 > 网络编程 > Javascript > firefox TBODY 用js显示和隐藏时出现错位的解决方法

Javascript
javascript 写类方式之九
javascript 写类方式之十
javascript 浏览器判断 绑定事件 arguments 转换数组 数组遍历
jquery BS,dialog控件自适应大小
javascript 面向对象思想 附源码
js 日期转换成中文格式的函数
JavaScript 对象、函数和继承
JavaScript 解析读取XML文档
javascript获取表格 td 中的内容
javascript xml为数据源的下拉框控件
jQuery 1.3 和 Validation 验证插件1.5.1
javascript 字符 Escape,encodeURI,encodeURIComponent
jquery text,radio,checkbox,select操作实现代码
JavaScript 继承的实现
JS 数组 移除 实现代码
javascript eval()应用实例 select
javascript 焦点的两个问题
JS 巧妙获取剪贴板数据 Excel数据的粘贴
Jquery 组合form元素为json格式,asp.net反序列化
window.onload 加载完毕的问题及解决方案(上)

Javascript 中的 firefox TBODY 用js显示和隐藏时出现错位的解决方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 508 ::
收藏到网摘: n/a

今天帮别人写一个网页,发现:当用javascript动态设置tr.style.display = "block"显示某行时,使用IE浏览没有问题,但使用firefox浏览时该行被移到了其它行的后面,很是诧异。 看下面这个例子:
点击运行可以看到效果:
[Ctrl+A 全选 提示:你可先修改部分代码,再按运行]

它在firefox中显示时,“第一行”被显示在最后一行。
于是在处理好需要显示的行后,另写了一个函数,先记录需要显示的行,然后将所有行的style.display都设置为"none",最后再将需要显示的行依次显示出来。这样,IE和firefox的显示结果就一样了。
后来,我还是觉得这个方法很笨,就又潜心研究了一番,发现,只要将第二行和都三行都加上style="display:block",显示也就正常了。见下面的代码:
点击运行可以看到效果:
[Ctrl+A 全选 提示:你可先修改部分代码,再按运行]

由此可见,firefox对是否设置style="display:block"是区别对待的,而IE作了适当的兼容处理。
结论和教训是:尽量使用标准做法,不要指望浏览器可以兼容。IE用多了就常常会忘记这点。
注:如果不使用tbody则没有这个问题。但tbody可以起到对行进行分组的作用,当一次需要显示或隐藏多行时很有用。