ArielNessi Posted July 21, 2011 Report Share Posted July 21, 2011 Prezados,Gostaria de tirar uma duvida,quando elementos são postos com o mesmo nome, por ex.:<label name = "teste"></labe> <label name ="teste"></label> uma vez invocado por javascript com document.getElementsByName("teste") ele retorna uma array de elementos no caso acima para acessar alguma propriedade especifica eu teria q chamar por document.getElementsByName("teste")[0] minha duvida é que propriedade eu chamo para retornar este numero por exemplo <label onclick = "teste(this)" name = "teste"></label> <label onlock = "teste(this)" name = "teste"></label> function teste(variavel) alert(variavel.*algumacoisa*) }de forma que clicando no priemiro label eu receba o 0 e no segundo label um 1 ( a posição do elemento no array)Grato desde já Quote Link to comment Share on other sites More sharing options...
0 Willian Gustavo Veiga Posted July 22, 2011 Report Share Posted July 22, 2011 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> </head> <body> <form method="post" action=""> <input name="a" type="text" /> <input name="b" type="text" /> <input name="c" type="text" /> </form> <script> var elements = document.getElementsByTagName('input'); console.log(elements[0].name); // imprime a console.log(elements[1].name); // imprime b console.log(elements[2].name); // imprime c </script> </body> </html>Seria isso? Não sei se entendi bem.Um abraço. Quote Link to comment Share on other sites More sharing options...
0 ArielNessi Posted July 22, 2011 Author Report Share Posted July 22, 2011 Willian,Obrigado a atenção,acontece que na pratica estou trabalhando com uma tela dinamica, então meu js não pode conter numeros estaticos para as posições, mas eu sempre passo o argumento this na função, o que pelo menos até onde eu entendo carrega para a função exatamente o objeto que gerou o evento de chamada. então suponho que exista algum comando/maneira de apartir de um this chegar a posição do elemento não tenho muita experiencia com java e não achei nada pesquisando por aipartindo do seu codigo eu quero o mesmo resultado mas da seguinte maneira<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> </head> <body> <form method="post" action=""> <input name="a" type="text" onclick = "funcao(this)" /> <input name="b" type="text"onclick = "funcao(this)" /> <input name="c" type="text" onclick = "funcao(this)"/> </form> <script> function funcao(elements) // console.log(elements[0].name); // imprime a // console.log(elements[1].name); // imprime b // console.log(elements[2].name); // imprime c console.log(elements.?posiçãoNoArray?) //se chamado por a imprime 0 console.log(elements.?posiçãoNoArray?) //se chamado por b imprime 1 console.log(elements.?posiçãoNoArray?) //se chamado por c imprime 2 </script> </body> </html>Espero que tenha ficado mais claro agora, grato desde já Quote Link to comment Share on other sites More sharing options...
0 Tenko Posted July 22, 2011 Report Share Posted July 22, 2011 Já tentou usar com id?<form method="post" action="" id="forms"> <input name="a" id='0' type="text" onclick = "funcao(this);"/> <input name="a" id='1' type="text" onclick = "funcao(this);"/> <input name="a" id='2' type="text" onclick = "funcao(this);"/> </form> <script> function funcao(elements){ alert( elements.id ) } </script> Quote Link to comment Share on other sites More sharing options...
0 ArielNessi Posted July 22, 2011 Author Report Share Posted July 22, 2011 Vou tentar explicar melhor a situaçãotenho uma pagina sendo gerada por registros de um banco de dadosa pagina tem como finalidade controlar agendamentos bancarios,os agendamentos são agrupados pelo dia em que foram cadastradose cada agrupamento possui um id portanto todos elementos checkbox agrupados no dia22/07/2011 possuem o mesmo id. dessa forma escrevi uma function em js para poder marcar todos checkbox de um agrupamento, somar os valores e mostrar um total dos selecionados. tudo atraves de um loop para todos elementos com o id referente ao agrupamento.digamos<div> <label>Agrupamento 22/07/2011</label> <input type = "checkbox" onclick = "checkall('1')"> <div> <label name = "x1"> R$ 2000,00</label> <checkbox name = "a1" value = "10"> <br> <label name = "x1"> R$ 3000,00</label> <checkbox name = "a1" value = "12"> <label name = "x1"> R$ 4000,00</label> <checkbox name = "a1" value = "15"> </div> </div> <div> <label>Agrupamento 23/07/2011</label> <input type = "checkbox" onclick = "checkall('2')" <div> <label name = "x2"> R$ 1,00</label> <checkbox name = "a2" value = "11"> <br> <label name = "x2"> R$ 2,00</label> <checkbox name = "a2" value = "14"> <label name = "x2"> R$ 3,00</label> <checkbox name = "a2" value = "19"> </div> </div> então na função eu chamo por x2 por exemplo e faço um loop por todos elementos function checkall(argumento) var exemplo var soma exemplo = "x" + argumento for(var i = 0; i < document.getElementsByName(exemplo).length;i++) { exemplo = document.getElementsByName(exemplo)[i].childNodes[0].nodeValue exemplo = exemplo.replace("R$", "") exemplo = exemplo.replace(".",",") exemplo = exemplo.replace(",",".") soma = parseFloat(exemplo) + soma }isso é o que eu JÁ fiz, mas agora gostaria de fazer a soma funcionar quando um checkbox é ativado individualmente, suponho que exista um comando que retorne a posição do de um elemento a partir do parametro this, desculpem acho que não estou conseguindo ser claro Quote Link to comment Share on other sites More sharing options...
Question
ArielNessi
Prezados,
Gostaria de tirar uma duvida,
quando elementos são postos com o mesmo nome, por ex.:
uma vez invocado por javascript com ele retorna uma array de elementos no caso acima para acessar alguma propriedade especifica eu teria q chamar por minha duvida é que propriedade eu chamo para retornar este numero por exemplode forma que clicando no priemiro label eu receba o 0 e no segundo label um 1 ( a posição do elemento no array)
Grato desde já
Link to comment
Share on other sites
4 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.