在我的应用程序中,我使用一个框架,该框架在运行时以升序生成一个表格,其中包含单元格的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”中或者只有它有一定的内容(正如我所说的那样我只能设置两个)... 任何人都知道如何解决这个问题?! 提前谢谢!
答案 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");
选择第一行,第二列
两者都不是特别优雅,但应该在等待修复错误框架时完成工作;)