2008-04-02
IE让人啼笑皆非的bug: 用cell的序号,找不到cell.
先不废话 代码如下:
运行后
ie里提示 tr1 td2
ff safari opera下都提示 tr1 和 td3
---------------------------------
总结: 也就是说 在IE里 ,当table中有隐藏的td时 , cellIndex这个属性不再可靠.
但是 当table中有隐藏的tr时 , rowIndex这个属性依然是可靠的.
ie里对 td 隐藏后的 ,在计算 cellIndex时 会当作那个隐藏的td被移除了一样计算
但是 tr的cells集合内却并没有移除那个隐藏的td.
IE的做法实在是 让人无语了
<html>
<head>
<script type="text/javascript" >
function init(){
var tab0=document.getElementById('tab0');
var tr1=document.getElementById('tr1');
var td3=document.getElementById('td3');
var idx_tr1=tr1.rowIndex;
var idx3= td3.cellIndex;
alert( tab0.tBodies[0].rows[idx_tr1].id + '\n'+ tr1.cells[idx3].id );
}
</script>
</head>
<body onload="init()">
<table id="tab0" border="1" width="300">
<tr id="tr0" style="display:none;"><td>.</td><td>.</td><td>.</td><td>.</td><td>.</td></tr>
<tr id="tr1">
<td id="td0">0</td>
<td id="td1">1</td>
<td id="td2" style="display:none;">2</td>
<td id="td3">3</td>
<td id="td4">4</td>
</tr>
</table>
</body>
</html>
运行后
ie里提示 tr1 td2
ff safari opera下都提示 tr1 和 td3
---------------------------------
总结: 也就是说 在IE里 ,当table中有隐藏的td时 , cellIndex这个属性不再可靠.
但是 当table中有隐藏的tr时 , rowIndex这个属性依然是可靠的.
ie里对 td 隐藏后的 ,在计算 cellIndex时 会当作那个隐藏的td被移除了一样计算
但是 tr的cells集合内却并没有移除那个隐藏的td.
IE的做法实在是 让人无语了
评论
fins
2008-04-07
按ms的说法,如下
http://support.microsoft.com/kb/814506
似乎ms并不认为这是一个bug
ms同时提供了一个他们的解决方案:
ray_linn 的 ie注册表里是不是正好有这项啊??
http://support.microsoft.com/kb/814506
似乎ms并不认为这是一个bug
ms同时提供了一个他们的解决方案:
引用
自动修复程序包安装以下注册表项具有 REG _ DWORD 值为 1:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main Count Hidden Table Cells
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Main Count Hidden Table Cells
ray_linn 的 ie注册表里是不是正好有这项啊??
fins
2008-04-06
楼上的确实没有出现这个问题?
你确定是运行我主贴里的代码后 在IE提示的也是 tr1 和 td3 ?
那就奇怪了
你能不能说一下你的ie版本
因为这个bug已经在几十台机器上测试过 ,确实存在了.
你确定是运行我主贴里的代码后 在IE提示的也是 tr1 和 td3 ?
那就奇怪了
你能不能说一下你的ie版本
因为这个bug已经在几十台机器上测试过 ,确实存在了.
ray_linn
2008-04-06
我的IE下好好的,大概是你RP的问题..
Quake Wang
2008-04-02
这是一个很"著名"的老问题
我最初是在webfx的sortable table的脚本里面遇到的,然后他们也采用了和你类似的方法进行了修复:
没有想到IE现在还是有这个bug
我最初是在webfx的sortable table的脚本里面遇到的,然后他们也采用了和你类似的方法进行了修复:
引用
| 2003-07-04 | Added workaround for IE cellIndex bug.
this.sort(SortableTable.msie ? SortableTable.getCellIndex(el) : el.cellIndex);
// IE returns wrong cellIndex when columns are hidden
SortableTable.getCellIndex = function (oTd) {
var cells = oTd.parentNode.childNodes
var l = cells.length;
var i;
for (i = 0; cells[i] != oTd && i < l; i++)
;
return i;
};没有想到IE现在还是有这个bug
kaipingk@gmail.com
2008-04-02
微软的东西多又杂,自己实现的东西给外行人看什么都有,什么都可以做,当细细的用它的东西时候会发现很多莫名其妙的不一致的东西,实在是郁闷。
unifly
2008-04-02
微软的伙计干事情也太不严谨了吧,建议将此bug发给IE开发组……
fins
2008-04-02
为解决这一问题,写了一个方法:
getCellIndex : function(td){
if (GT.isIE){
var cells=td.parentNode.cells;
for (var i=0,j=cells.length;i<j;i++ ){
if (cells[i]===td){
return i;
}
}
}
return td.cellIndex;
},
发表评论
- 浏览: 743382 次
- 性别:

- 来自: 小胖儿的大城

- 详细资料
搜索本博客
我的相册
customHead
共 76 张
共 76 张
链接
最新评论
-
再发一篇牢骚贴: 文档又丢 ...
文档也是要入CVS的。
-- by bottom -
GT-Grid开发笔记: 这几天 ...
惊鸿逝水 写道>>关于价值,如果GT收费,那么它值多少钱呢? 10元吧 10 ...
-- by lonelyblue -
蝙蝠侠6票房过$2亿之后的 ...
强烈鄙视 剧透的人 尤其是 剧透之前 不写明"剧透 慎入"的人 这电影在我心里 ...
-- by fins -
蝙蝠侠6票房过$2亿之后的 ...
看了。。感想: --BATMAN如果不是有超强的装备,一定是JOKER笑到最后。 ...
-- by dimvar -
GT-Grid "缺陷,、bug、 ...
问题不是出在这 你等着新版本吧 一个属性搞定 :) 今天晚上发布 (前提是 ...
-- by fins






评论排行榜