-5

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

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

我可以设置的是类(my_msg)和单元格的内容(表格)。我只想制作:

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

但我无法识别单元格......我只想让getElementById在“my_msg”类中或者只有当它具有特定内容时(正如我所说的我可以设置的唯一两件事).. . 任何人都知道我该如何解决这个问题?!提前致谢!

4

1 回答 1

2

将 HTML 更新为:<td id="ElementX1X1" class="my_msg" >...

已编辑 - 解决损坏的框架:

<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);
    } 
});

match 将指向您要查找的元素或 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">…&lt;/td>
    <td class="my_msg" align="left" id="ElementX1X2">…&lt;/td>
…

所以你可以使用

$("#ElementX2X1");

选择第一行,第二列

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

于 2012-05-14T15:36:45.037 回答