按ID获取最接近的元素

时间:2008-09-10 00:59:46

标签: javascript html dom

我有两个要素:

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

单击b时,我想访问并操作其中的一些数据。 A没有全局唯一名称,因此document.getElementsByName不在。查看事件对象,我认为event.target.parentNode会有一些像getElementsByName这样的函数,但这似乎不是&lt; td&gt; s的情况。有没有简单的方法呢?

4 个答案:

答案 0 :(得分:5)

如果ab彼此相邻并且拥有相同的父级,则可以使用prevSibling的{​​{1}}属性查找b

答案 1 :(得分:2)

  1. 您应该能够找到从event object点击的元素。您可能需要e.targete.srcElement,具体取决于您的浏览器。以下代码来自此w3schools example

    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遍历函数。 Some more information here。还有一个w3schools参考XML DOM Nodes

答案 2 :(得分:1)

Prototype也有很好的功能可以在DOM中移动。在您的示例中,类似下面的内容可以解决问题:

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

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

答案 3 :(得分:0)

留下你的普通香草JavaScript。获取JQuery - 它将为您节省大量时间。

http://docs.jquery.com/Selectors