Domanda

Ho due elementi:

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

Quando si fa clic su b, voglio accedere a e manipolare alcuni dei suoi dati.A non ha un nome univoco globale, quindi document.getElementsByName non è disponibile.Esaminando l'oggetto evento, pensavo che event.target.parentNode avrebbe avuto una funzione come getElementsByName, ma questo non sembra essere il caso di <td>s.C'è un modo semplice per farlo?

È stato utile?

Soluzione

Se a E b sono uno accanto all'altro e hanno lo stesso genitore, puoi usare il file prevSibling proprietà di b trovare a.

Altri suggerimenti

  1. Dovresti essere in grado di trovare l'elemento su cui è stato fatto clic dal file oggetto evento.A seconda del browser che potresti desiderare e.target O e.srcElement.Il codice seguente proviene da questo Esempio 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. È quindi possibile utilizzare il file nextSibling E prevSibling Funzioni di attraversamento del DOM. Qualche informazione in più qui.E ancora una volta un riferimento a w3schools Nodi DOM XML.

Prototipo ha anche delle belle funzioni per spostarsi nel DOM.Nel tuo esempio qualcosa di simile potrebbe fare al caso tuo:

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

E se c'è più di un elemento a quel livello hai a portata di mano il potere dei selettori CSS per specificare esattamente quale elemento desideri

Lascia dietro di te il tuo semplice JavaScript vanilla.Ottieni JQuery: ti farà risparmiare un sacco di tempo.

http://docs.jquery.com/Selectors

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top