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?

¿Fue útil?

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

  1. 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 o e.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.");
    }
    
  2. Luego podrá utilizar el nextSibling y prevSibling 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.

http://docs.jquery.com/Selectores

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top