存储表行的ID

时间:2010-12-21 07:05:08

标签: javascript

抱歉再打扰一些人。但我仍然没有找到解决问题的方法。

我有一个很好的老式HTML表。每个覆盖范围都有其唯一的ID。我想用JavaScript实现的是,当我在每行上点击一个链接时,这个ID就存储在一个变量中。

可能听起来很容易,我是JS的新手,我无法弄清楚到底。有人可以帮帮我吗?

谢谢!

4 个答案:

答案 0 :(得分:0)

您点击的Onclick事件可以调用类似

的函数
function RecordClick( elem ) {
    mylocalVar = elem.id;
}

说     的onclick = “RecordClick(本);”

答案 1 :(得分:0)

在服务器端创建表时,将其放在HTML中(根据我的理解情况):

...
<tr>
    <td>
        <a href="...">Some link name</a>
    </td>
</tr>
...

那么为什么不这样做:

<script>
    var rowID = -1;
</script>
...
<tr>
    <td>
        <a href="javascript: rowID = 111; void(0);">Some link name</a>
    </td>
</tr>
...

这不是最好的方法,但它完成了工作。如果您使用的是像jQuery这样的库,那么您可以采用完全不同的方式并使用闭包。

答案 2 :(得分:0)

你必须为此采取一个全局变量。 U可以像 -

一样进入头部

var idHolder;

现在在onclick处理程序表中,你调用了一个像

这样的函数

table onclick =“extractId(obj)”&gt;

函数定义可能是这样的 -

function extractId(var obj) {    idHolder = obj.Id; }

如果有任何问题回复,这将是您的工作。

答案 3 :(得分:0)

由于click事件冒泡DOM,您可以通过挂钩表的click事件,然后确定单击哪一行来完成此操作。这通常称为“事件委托”。这样的事情(live copy):

// Hook click on the table
document.getElementById('theTable').onclick = function(e) {
  var element;

  // Handle IE vs. standards
  e = e || window.event;

  // Find out what was clicked (more IE vs. standards)
  element = e.target || e.srcElement;

  // Find the row
  while (element && element.tagName !== "TR") {
    element = element.parentNode;
  }

  // Found it?
  if (element) {
    // Yes, remember the ID and show it
    targetVariable = element.id;
    display("You clicked row " + targetVariable);
  }
};

非主题:如果您使用jQueryPrototype,{{3}等库,则可以更轻松地使用批次 },YUIClosure。例如,使用jQuery的上述代码如下所示:

$('#theTable').click(function(event) {
    var target = $(event.target).closest('tr');
    if (target.length > 0 ) {
        targetVariable = target[0].id;
        display("You clicked row " + targetVariable);
    }
});

any of several others

或使用其中一项新功能:

$('#theTable').delegate('tr', 'click', function(event) {
    targetVariable = this.id;
    display("You clicked row " + targetVariable);
});

Live copy