Chegando mais próximo elemento de identificação
-
09-06-2019 - |
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?
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
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
oue.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."); }
Em seguida, você pode usar o
nextSibling
eprevSibling
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.