js 得到table中td的实际位置 【js高手帮帮忙】

abcd_ufo 2011-08-08 09:13:49
js 得到table中td的实际位置


<TABLE border=1>
<TR>
<TD>cc</TD>
<TD colSpan="2">bb</TD>
<td>zz</td>
</TR>
<TR>
<TD>dd</TD>
<TD>ee</TD>
<TD>hh</TD>
<td>oo</td>
</TR>
</TABLE>

中间td 的值为zz的真实位置为 0,3 而不是0,2

望js高手帮帮忙!
...全文
761 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
abcd_ufo 2011-08-09
  • 打赏
  • 举报
回复
我希望不是专门针对这一个td 是 通用的 一个方法

方法的生命应该是这样写的...
function returnTrueTd(table,xPos,yPos)
{
//通过代码得到table中坐标为xPos,yPos的真实位置的Td
//也就是说将table的所有单元格最小化,没有跨行跨列这一说
//如下面的一张图片
}

孟子E章 2011-08-09
  • 打赏
  • 举报
回复
如果你要计算 colSpan ,你需要这样啊
<TABLE border=1 id="t1">
<TR>
<TD>cc</TD>
<TD colSpan="2">bb</TD>
<td>zz</td>
</TR>
<TR>
<TD>dd</TD>
<TD>ee</TD>
<TD>hh</TD>
<td>oo</td>
</TR>
</TABLE>
<script type="text/javascript">
var t=document.getElementById('t1');
var cell = t.rows[0].getElementsByTagName("td");
var cellPosition = 0;
for (i = 0; i < cell.length; i++) {
cellPosition += cell[i].colSpan;
if (cell[i].innerHTML == "zz") {
alert(cellPosition)
}
}
</script>
孟子E章 2011-08-09
  • 打赏
  • 举报
回复
index是从0开始算的,所以到zz是2个,表示的是第三列。

abcd_ufo 2011-08-09
  • 打赏
  • 举报
回复
这位前辈说的非常有道理 , 但是 我的确是 有这么一个需求 我在通过 得到他们的位置的时候 必须要用到递归 最后弄得我 头都大多了 .. 我在网上找到了 解决 这个的答案了 ..

http://fireinjava.iteye.com/blog/759190
  • 打赏
  • 举报
回复
不好办,colspan,rowspan只是在视觉上呈现跨行或跨列的样式,实际上不存在真正合并的行或列。
而你想的是把那些本不存在的“被合并的单元格”当作实体对待。
解答是告诉你怎样做才对,未必就是问啥答啥。所以最好能说明必须这样做的理由,否则遵循规定才是正道。
孟子E章 2011-08-09
  • 打赏
  • 举报
回复
你必须对你给定的行、列进行循换,判断是否有colSpan,rowSpan属性才能达到你的目的。思路就是这样了,
MuBeiBei 2011-08-08
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 qianzai5765638 的回复:]
他的实际位置 不光是单单的 针对 这一个
[/Quote]

你是不是想把colSpan也算里面?
<TR>
<TD>cc</TD>
<TD colSpan="2">bb</TD>
<td>zz</td>
</TR>


abcd_ufo 2011-08-08
  • 打赏
  • 举报
回复
他的实际位置 不光是单单的 针对 这一个
MuBeiBei 2011-08-08
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 qianzai5765638 的回复:]
哥哥啊 不是这个
[/Quote]
那你想拿到什么?你不是说的位置吗?
abcd_ufo 2011-08-08
  • 打赏
  • 举报
回复
哥哥啊 不是这个
MuBeiBei 2011-08-08
  • 打赏
  • 举报
回复
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style type="text/css">
</style>

</head>

<body>
<TABLE border=1 id="tab">
<TR>
<TD>cc</TD>
<TD colSpan="2">bb</TD>
<td>zz</td>
</TR>
<TR>
<TD>dd</TD>
<TD>ee</TD>
<TD>hh</TD>
<td>oo</td>
</TR>
</TABLE>
<script>
var trs = document.getElementById('tab').getElementsByTagName('tr'),
len = trs.length,row = 0,col = 0;

for(var i = 0; i < len; i++){
var tds = trs[i].getElementsByTagName('td');
for(var j = 0; j < tds.length; j++){
if(tds[j].innerHTML == 'zz'){
row = i;
col = j + 1;
}
}
}

document.write(row,col);
</script>

</body>
</html>
abcd_ufo 2011-08-08
  • 打赏
  • 举报
回复
前辈啊 ... 不是 就是得到他的实际的位置 也就是将所有的td 最小化 也就是没有colspan 和rowspan
豆虫 2011-08-08
  • 打赏
  • 举报
回复
因为他的行和列下标都是从0开始计数的
如果你需要0 3 把我的代码alert(j+1)就可以了
abcd_ufo 2011-08-08
  • 打赏
  • 举报
回复
6 楼得前辈 弄错了 答案还是 0,2 我最终要的结果是 0,3 目的要将colspan和rowspan 考虑到
豆虫 2011-08-08
  • 打赏
  • 举报
回复
<html>
<head>
</head>
<body>
<TABLE border=1 id="t1">
<TR>
<TD>cc</TD>
<TD colSpan="2">bb</TD>
<td>zz</td>
</TR>
<TR>
<TD>dd</TD>
<TD>ee</TD>
<TD>hh</TD>
<td>oo</td>
</TR>
</TABLE>
<script type="text/javascript">
var tbody=document.getElementById('t1').tBodies[0];
var arr = tbody.rows;
for(var i = 0,len = arr.length;i<len;i++){
for(var j = 0,len_c = arr[i].cells.length;j<len_c;j++){
if(arr[i].cells[j].innerHTML == "zz"){
alert(i);
alert(j);
}
}

}
</script>
</body>
</html>
abcd_ufo 2011-08-08
  • 打赏
  • 举报
回复
前辈有思路吗
abcd_ufo 2011-08-08
  • 打赏
  • 举报
回复
0,3 指的是行,列
abcd_ufo 2011-08-08
  • 打赏
  • 举报
回复
就是算加上 colspan 和 rowspan 最终的位置
licip 2011-08-08
  • 打赏
  • 举报
回复
按那一行算吧。在那一行中是2吧。
abcd_ufo 2011-08-08
  • 打赏
  • 举报
回复
高手快帮我解决下

87,915

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧