Ottenere l'elemento più vicino tramite ID
-
09-06-2019 - |
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?
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
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
Oe.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."); }
È quindi possibile utilizzare il file
nextSibling
EprevSibling
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.