1

私には2つの要素があります:

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

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

4

4 に答える 4

5

abが隣り合っていて、同じ親を持っている場合は、のプロパティを使用してをprevSibling見つけるbことができますa

于 2008-09-10T01:08:44.353 に答える
2
  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. nextSibling次に、およびprevSiblingDOMトラバーサル関数 を使用できます。ここにいくつかの詳細情報また、XMLDOMノードのw3schoolsリファレンスもあります。

于 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 に答える