Pergunta

Eu tenho dois elementos:

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

Quando b é clicado, eu quero acessar um e manipular alguns dos seus dados.Não tem um nome exclusivo, para documento.getElementsByName está fora.Olhando para o objeto de evento, eu pensei evento.de destino.parentNode teria alguma função como getElementsByName, mas este não parece ser o caso com <td>s.Há alguma forma simples de fazer isso?

Foi útil?

Solução

Se a e b são próximas umas das outras e têm o mesmo pai, você pode usar o prevSibling propriedade de b para encontrar a.

Outras dicas

  1. Você deve ser capaz de encontrar o elemento que foi clicado a partir do objeto de evento.Dependendo do seu navegador você pode querer e.target ou e.srcElement.O código abaixo é a partir desta w3schools exemplo:

    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. Em seguida, você pode usar o nextSibling e prevSibling DOM transversal funções. Mais informações aqui.E, mais uma vez uma referência para w3schools Nós DOM XML.

Protótipo também tem funções para mover o DOM.No seu exemplo, algo como o seguinte iria fazer o truque:

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

E se existem é mais do que um elemento em que nível você tem o poder de seletores CSS em sua mão para especificar exatamente qual é o elemento que você deseja

Deixe o seu plain vanilla JavaScript para trás.Obter JQuery--ela vai lhe poupar uma tonelada de tempo.

http://docs.jquery.com/Selectors

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top