2008-09-10 13 views
1

で最も近い要素を取得する:Bをクリックすると私は2つの要素を持っているID

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

は、私がアクセスし、そのデータの一部を操作したいです。 Aにはグローバルに一意の名前がないため、document.getElementsByNameは出力されません。イベントオブジェクトを調べると、私はevent.target.parentNodeがgetElementsByNameのようないくつかの機能を持っていると思っていましたが、これは<td>でそうではないようです。これを行う簡単な方法はありますか?

答えて

5

abはお互いの隣にあり、同じ親を持っている場合は、aを見つけるためにbprevSiblingプロパティを使用することができます。

2
  1. event objectからクリックされた要素を見つけることができます。お使いのブラウザによっては、e.targetまたはe.srcElementが必要な場合があります。次のコードは、このw3schools exampleからです:あなたは、その後nextSiblingprevSibling DOMのトラバーサル機能を使用することができ

    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. Some more information here。さらに、XML DOM Nodesのw3schoolsのリファレンスもあります。

1

PrototypeもDOMに動き回る素敵な機能があります。あなたの例では、次のようなものがトリックだろう:

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

をそして存在する場合、あなたが

をたい要素を正確に指定するには、あなたの手でCSSセレクタの力を持っているというレベルでは複数の要素であります