Obteniendo el elemento más cercano por id
-
09-06-2019 - |
Pregunta
Tengo dos elementos:
<input a>
<input b onclick="...">
Cuando se hace clic en b, quiero acceder a y manipular algunos de sus datos.A no tiene un nombre único global, por lo que document.getElementsByName está fuera.Al examinar el objeto de evento, pensé que event.target.parentNode tendría alguna función como getElementsByName, pero este no parece ser el caso con los <td>.¿Existe alguna forma sencilla de hacer esto?
Solución
Si a
y b
están uno al lado del otro y tienen el mismo padre, puedes usar el prevSibling
propiedad de b
encontrar a
.
Otros consejos
Debería poder encontrar el elemento en el que se hizo clic desde el objeto de evento.Dependiendo de su navegador es posible que desee
e.target
oe.srcElement
.El siguiente código es de este ejemplo de 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."); }
Luego podrá utilizar el
nextSibling
yprevSibling
Funciones transversales DOM. Algo más de información aquí.Y una vez más una referencia de w3schools para Nodos DOM XML.
Prototipo También tiene buenas funciones para moverse en el DOM.En su ejemplo, algo como lo siguiente funcionaría:
b.up().down('a')
Y si hay más de un elemento en ese nivel, tienes el poder de los selectores CSS a tu alcance para especificar exactamente qué elemento deseas.
Deje atrás su simple JavaScript básico.Obtenga JQuery: le ahorrará mucho tiempo.