我有两个要素:

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

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

有帮助吗?

解决方案

如果 ab 彼此相邻且具有相同的父级,您可以使用 prevSibling 的财产 b 找到 a.

其他提示

  1. 您应该能够找到从 事件对象. 。根据您可能需要的浏览器 e.target 或者 e.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. 然后您可以使用 nextSiblingprevSibling DOM 遍历函数。 这里有更多信息. 。再次提供 w3schools 参考 XML DOM 节点.

原型 还有在 DOM 中移动的好函数。在您的示例中,类似以下内容就可以解决问题:

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

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

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

http://docs.jquery.com/Selectors

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top