Ir para conteúdo
Fórum Script Brasil
  • 0

Posição de elemento em array


ArielNessi

Pergunta

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á

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

<!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.

Link para o comentário
Compartilhar em outros sites

  • 0

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 ai

partindo 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á

Link para o comentário
Compartilhar em outros sites

  • 0

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>

Link para o comentário
Compartilhar em outros sites

  • 0

Vou tentar explicar melhor a situação

tenho uma pagina sendo gerada por registros de um banco de dados

a pagina tem como finalidade controlar agendamentos bancarios,

os agendamentos são agrupados pelo dia em que foram cadastrados

e cada agrupamento possui um id portanto todos elementos checkbox agrupados no dia

22/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

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...