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

getElementById("+variavel+")... Porque não dá?


jgd

Pergunta

6 respostass a esta questão

Posts Recomendados

  • 0

Ola gente.

Romerito: O objeto na situação acima é um div normal.

.Andreia. e demais colegas...

É o mesmo raciocínio do código abaixo:

Neste caso, semelhante ao exemplo de cima.

Tenhos varios radiobox o qual atribuo "ID's" a partir de um consultas no banco de dados:

Cada radio tem 5 valores distintos ( values 1,2,3,4,0)

atribuo e pegos os valores como abaixo:

while not rsS0.eof
%>
<tr bgcolor="<%=sCorForTit2%>"><td align='right'><font size=1><%=rsS0("Avaliacao")%> </td>
<td align="center"><input type="radio" name="item_<%=n%>_<%=n2%>" value="1" onclick="verSelItem(<%=n%>,<%=n2%>,this.value);"/> </td>
<td align="center"><input type="radio" name="item_<%=n%>_<%=n2%>" value="2" onclick="verSelItem(<%=n%>,<%=n2%>,this.value);"/> </td>
<td align="center"><input type="radio" name="item_<%=n%>_<%=n2%>" value="3" onclick="verSelItem(<%=n%>,<%=n2%>,this.value);"/> </td>
<td align="center"><input type="radio" name="item_<%=n%>_<%=n2%>" value="4" onclick="verSelItem(<%=n%>,<%=n2%>,this.value);"/> </td>
<td align="center"><input type="radio" name="item_<%=n%>_<%=n2%>" value="0" onclick="verSelItem(<%=n%>,<%=n2%>,this.value);"/> 
<input type="hidden" name="vrItem_<%=n%>_<%=n2%>" id='TI' size=2 value=""/>   
</td>
</tr>

<%
n2=n2+1
rsS0.MoveNext
Wend
Vejam que desta forma atribuo ID´s dinamnicamente conforme os itens que estão no banco de dados. O resto é basico... Ao chamar : verSelItem pego o seu valor e somo aos demais valores dos outros radios e assum tenho o total de pontos selecionados.
&lt;script>
    function verSelItem(n,n2,valor) {
        if (valor == "") {
            document.getElementById("vrItem_" + n + "_" + n2).value = "";
        } else {
            document.getElementById("vrItem_" + n + "_" + n2).value = valor;

            var inputs, x, selecionados = 0;
            var string1 = "0";
            var string2 = "";

            inputs = document.getElementsByTagName('input');


            for (x = 0; x < inputs.length; x++) {
                if (inputs[x].type == 'hidden') {
                    if (inputs[x].id == 'TI') {

                        if (inputs[x].value == "") {
                        } else {
                            string2 = inputs[x].value
                            string2 = string2.replace(".", "").replace(",", ".")
                            //alert(string2)
                            string1 = (parseInt(string1) + parseInt(string2));
                            //alert(string1)
                        }
                        selecionados++;
                    }
                }
            }
            ////////////

            document.getElementById("pontos").value = string1;
            /// neste caso trata-se de um objeto input

        }
    }
</script>
No IE roda certinho. No FireFox da :
Erro: document.getElementById("vrItem_" + n + "_" + n2) is null

Link para o comentário
Compartilhar em outros sites

  • 0

Gente!

Tentei via : document.getElementsByTagName(Xid).value = "";

Não da erro porém também não soma os valores.

Tem que ter um forma de passar os valores via variavel..

function verSelItem(n, n2, valor) {
        alert(n + " = " + n2 + " = " + valor)
        var Xid = "vrItem_"+ n+ "_"+ n2;
        alert(Xid);
        alert(document.getElementById(""+Xid).value);  
        if (valor == "") {
           // eval('opener.document.form,' + variavel + '.value')

             
          document.getElementsByTagName  getElementById(Xid).value = "";
            
        } else {
        document.getElementById(Xid).value = valor;
.....
</script>

Link para o comentário
Compartilhar em outros sites

  • 0

Gente,

Finalmente consegui fazer funcionar pelo menos um dos problemas que tinha com o getElementById no Firefox.

Tinha que ter uma forma de passar o valor do item escolhido para a somatória total, sem “engessar” o nome dos elementos mantendo assim o form dinâmico.

Agora vou partir para o segundo tb é somatório só que com valores moeda...

Solução: passei na função o nome do campo como objeto. Creio eu.

Então: Considerando que tenho os campos /inputs gerando a partir do laço (neste caso asp). Sendo seu valor defaut = 0”” chamo verSelItem para pegar o valor escolhido e passo para o hidden referencia para aplicar a somatória geral.

Atribuição dos nome dos campos.

n2=1
while not rsS0.eof
%>
<tr bgcolor="<%=sCorForTit2%>">
<td align='right'>
<font size=1><%=rsS0("Avaliacao")%>&nbsp;</td>
<td align="center">

<input type="radio" name="item_<%=n%>_<%=n2%>" value="1" id="x1" onclick="verSelItem(document.form.vrItem_<%=n%>_<%=n2%>,<%=n%>,<%=n2%>,this.value);">

 </td>
<td align="center">

<input type="radio" name="item_<%=n%>_<%=n2%>" value="2" id="x1" onclick="verSelItem(document.form.vrItem_<%=n%>_<%=n2%>,<%=n%>,<%=n2%>,this.value);">

</td>
<td align="center">

<input type="radio" name="item_<%=n%>_<%=n2%>" value="3" id="x1" onclick="verSelItem(document.form.vrItem_<%=n%>_<%=n2%>,<%=n%>,<%=n2%>,this.value);"> 

</td>
<td align="center">

<input type="radio" name="item_<%=n%>_<%=n2%>" value="4" id="x1" onclick="verSelItem(document.form.vrItem_<%=n%>_<%=n2%>,<%=n%>,<%=n2%>,this.value);"> 

</td>
<td align="center">

<input type="radio" name="item_<%=n%>_<%=n2%>" value="0" id="x1" onclick="verSelItem(document.form.vrItem_<%=n%>_<%=n2%>,<%=n%>,<%=n2%>,this.value);"> 

<input type="hidden" name="vrItem_<%=n%>_<%=n2%>" id='TI' size=2 value="0">   

</td>
</tr>

<%
n2=n2+1
rsS0.MoveNext
Wend
Função javaScript verSelItem
<script>
    function verSelItem(obj,n, n2, valor) {
    var inputs, x, selecionados = 0;
    var string1 = "0";
    var string2 = "0";
    inputs = document.getElementsByTagName('input');
    var Xid = "vrItem_"+ n+ "_"+ n2;
    var Xid2 = "item_" + n + "_" + n2;

    for (x = 0; x < inputs.length; x++) {
        if (inputs[x].type == 'radio') {
            if (inputs[x].id == 'x1') {
               // alert(inputs[x].name +" = "+ Xid2 +" = "+ valor)    
                if (inputs[x].name == Xid2) {
                 obj.value = valor;
                }
                
            }
        }
    }
    ////////////

   
            for (x = 0; x < inputs.length; x++) {
                if (inputs[x].type == 'hidden') {
                    if (inputs[x].id == 'TI') {

                        if (inputs[x].value == "") {
                        } else {
                            string2 = inputs[x].value
                            string2 = string2.replace(".", "").replace(",", ".")
                            //alert(string2)
                            string1 = (parseInt(string1) + parseInt(string2));
                            //alert(string1)
                        }
                        selecionados++;
                    }
                }
            }
           

            document.form.pontos.value = string1;

        }

</script>

Por favor, se algum puder avaliar a solução agradeceria.

Outra coisa. Só testei no FF e E.I. Demais navegadores não tenho disponível.

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