1

我有两个要素:

<input a>
<input b onclick="...">

单击 b 时,我想访问 a 并操作它的一些数据。A 没有全局唯一名称,因此document.getElementsByName已出局。查看事件对象,我认为event.target.parentNode会有一些类似的功能getElementsByName,但 <td>s 似乎不是这种情况。有什么简单的方法可以做到这一点吗?

4

4 回答 4

5

如果ab彼此相邻并且具有相同的父级,则可以使用 的prevSibling属性b来查找a

于 2008-09-10T01:08:44.353 回答
2
  1. 您应该能够找到从事件对象中单击的元素。根据您的浏览器,您可能需要e.targete.srcElement. 下面的代码来自这个w3schools 示例

    function whichElement(e) {
      var targ;
      if (!e) var e = window.event;
      if (e.target) {
        targ=e.target;
      } else if (e.srcElement) {
        targ = e.srcElement;
      }
    
      if (targ.nodeType==3) { // defeat Safari bug 
        targ = targ.parentNode;
      }
    
      var tname;
      tname = targ.tagName;
      alert("You clicked on a " + tname + " element.");
    }
    
  2. 然后,您可以使用nextSiblingprevSiblingDOM 遍历函数。 更多信息在这里。又是 w3schools 对XML DOM Nodes的参考。

于 2008-09-10T01:09:23.523 回答
1

Prototype还具有在 DOM 中移动的不错的功能。在您的示例中,类似以下内容可以解决问题:

b.up().down('a')

如果在该级别有多个 a 元素,您可以使用 CSS 选择器来准确指定您想要的元素

于 2008-09-10T06:51:26.103 回答
0

将您的普通 JavaScript 抛在脑后。获取 JQuery——它将为您节省大量时间。

http://docs.jquery.com/Selectors

于 2008-09-10T01:18:47.980 回答