2008-09-10 108 views
1

獲得最接近的元素,我有兩個要素:通過ID

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

當單擊B,我想訪問和操縱它的一些數據。 A沒有全局唯一的名稱,所以document.getElementsByName已經失效。縱觀事件對象,我認爲event.target.parentNode會有一些像getElementsByName這樣的函數,但是這似乎不是<td> s的情況。有沒有簡單的方法來做到這一點?

回答

5

如果ab是彼此相鄰並具有相同的父,你可以使用的bprevSibling屬性查找a

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

1

Prototype也有不錯的功能,在DOM走動。在您的例子像下面會做的伎倆:

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

如果有多於一個在你的手這個水平,你有CSS選擇器的功率元件指定正是你想要

哪個元素