javascript,表的动态id:如何识别?

时间:2012-05-14 15:28:59

标签: javascript

在我的应用程序中,我使用一个框架,该框架在运行时以升序生成一个表格,其中包含单元格的id。 因此我对row1和column1有“ElementX1X1”,对于row1和column2 etcetc有“ElementX1X2”... 生成的HTML结构将是:

<tr>
<td class="my_msg" align="left">
<id="ElementX1X1">

我可以设置的是类(my_msg)和单元格(表格的内容)。 我想简单地做:

var test=document.getElementById("ElementX1X1");
test.onclick=function();

但我无法识别细胞...... 我想制作getElementById只有它在类“my_msg”中或者只有它有一定的内容(正如我所说的那样我只能设置两个)... 任何人都知道如何解决这个问题?! 提前谢谢!

1 个答案:

答案 0 :(得分:2)

将HTML更新为: &lt; td id =&#34; ElementX1X1&#34;类=&#34; my_msg&#34; &GT; ...

编辑 - 解决破碎的框架:

<tr>
  <td class="my_msg" align="left">
   <id="ElementX1X1">
   some content
  </td>
  <td class="my_msg" align="left">
   <id="ElementX1X2">
   some content
  </td>
</tr>

如果你想找到第1行第2列,你可以使用一些jQuery来欺骗来检查元素的内容:

var row = 1; 
var column = 2;
var matched = null;
$(".my_msg").each({ 
    if($(this).html().indexOf('<id="ElementX' + row + 'X' + column + '">')!=-1){ 
        matched = $(this);
    } 
});

匹配将指向您正在寻找的元素或null - 但如果您已经知道单元格的行和列ID,那么为什么不只是走DOM?

var row = 1; 
var column = 2;
var matched = null;
var table = document.getElementsByTagName("TABLE")[0]; // up to you how your find it
try {
    matched = table.getElementsByTagName("TR")[row-1].getElementsByTagName("TD")[column-1];
} 
catch(err) { 
    // not found
}

或蛮力方式(即修复框架输出):

var table = $("#tableid");  // up to you how your find it
table.html(table.html().replace(/">\n<id="/g,'" id="'));

您的代码现在是:

<tr>
    <td class="my_msg" align="left" id="ElementX1X1">…</td>
    <td class="my_msg" align="left" id="ElementX1X2">…</td>
…

所以你可以使用

$("#ElementX2X1");

选择第一行,第二列

两者都不是特别优雅,但应该在等待修复错误框架时完成工作;)