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

document.getElementById("Qtde_" + var) 2


jgd

Pergunta

Gente,

Vejam outro codigo que não funciona o FireFox

No html + php atribuo "ID's" a partir de um laço (loop):

Exemplo:

<tr bgcolor="#ffffff">
<td align="center"><font size=1><input type="text" name="Qtde_11" onkeypress='return SomenteNumero(event)' size="5" style="text-align: right;" onblur="CalculaItem(11);" maxlength="3" value="0"></td>
<td align="center"><font size=1>pg-011<input type="hidden" name="ItemId_11" value="11"></td>
<td><font size=1>Um único Kit de listas de testes DUPLA SENA</td>
<td align='right'><font size=1>80,00&nbsp;<input type="hidden" name="Item_11" value="80,00"></td>
<td><font size=1><input type="text" name="Total_11" id="TI" size="11" readonly style="text-align: right;" maxlength="10" value="0"></td>
</tr>
Daí chamo a função para tomar o total do item + o total geral.
function CalculaItem(n){

var campo1 = document.getElementById("Qtde_"+n).value;
var campo2 = document.getElementById("Item_"+n).value;


if(campo1==""){
document.getElementById("Total_"+n).value="0";
}else{
if(campo1=="0"){
document.getElementById("Total_"+n).value="0";
}else{

var var1 = campo1.replace(".","").replace(",",".")
var var2 = campo2.replace(".","").replace(",",".")

var totalG='';
var total = (var2*var1);
if(total <="0.0"){

document.getElementById("Total_"+n).value="0";
}else{

var valor=total.toString();
if (valor.indexOf(".")!= -1){

var divisao=valor.split(".");
var reais=divisao[0];
switch(reais.length){
case 4:{reais = reais.slice(0,1)+"."+ reais.slice(1,4); break;}
case 5:{reais = reais.slice(0,2)+"."+ reais.slice(2,6); break;}
case 6:{reais = reais.slice(0,3)+"."+ reais.slice(3,7); break;}
case 7:{reais = reais.slice(0,1)+"."+ reais.slice(1,4)+"."+reais.slice(4,8); break;}
}

var centavos=divisao[1];
var cent=centavos.substring(0,2);

var t = cent.length;

if(cent==""||cent==null){
totalG = reais+",00";
} else {
    if(cent.length==1){
    totalG = reais+","+cent+"0";
    }
    if(cent.length==2){
    totalG = reais+","+cent;
    }
}

document.getElementById("Total_"+n).value=totalG;

}else{

switch(valor.length){
case 4:{valor = valor.slice(0,1)+"."+ valor.slice(1,4); break;}
case 5:{valor = valor.slice(0,2)+"."+ valor.slice(2,6); break;}
case 6:{valor = valor.slice(0,3)+"."+ valor.slice(3,7); break;}
case 7:{valor = valor.slice(0,1)+"."+ valor.slice(1,4)+"."+valor.slice(4,8); break;}
}
totalG = valor+",00";
document.getElementById("Total_"+n).value=totalG;

   }
  }
 }
}
SomaTotal();
//////////////////////////////////////////////////////////////////////////////

}



function SomaTotal() {
var string1="0";
var string2="";

var inputs, x, selecionados=0;
  inputs = document.getElementsByTagName('input');
  for(x=0;x<inputs.length;x++){
    if(inputs[x].type=='text'){
      if(inputs[x].id == 'TI'){
        //
        string2 = inputs[x].value
        string2 = string2.replace(".","").replace(",",".")
        //alert(string2)
        string1 = (parseFloat(string1)+ parseFloat(string2));
        //alert(string1)
        //////
        selecionados++;
      }
    }
  }



var totalG='';
var total = string1;
if(total <="0.0"){

document.form.TotalGeral.value="0";
}else{

var valor=total.toString();
if (valor.indexOf(".")!= -1){

var divisao=valor.split(".");
var reais=divisao[0];
switch(reais.length){
case 4:{reais = reais.slice(0,1)+"."+ reais.slice(1,4); break;}
case 5:{reais = reais.slice(0,2)+"."+ reais.slice(2,6); break;}
case 6:{reais = reais.slice(0,3)+"."+ reais.slice(3,7); break;}
case 7:{reais = reais.slice(0,1)+"."+ reais.slice(1,4)+"."+reais.slice(4,8); break;}
}

var centavos=divisao[1];
var cent=centavos.substring(0,2);

var t = cent.length;

if(cent==""||cent==null){
totalG = reais+",00";
} else {
    if(cent.length==1){
    totalG = reais+","+cent+"0";
    }
    if(cent.length==2){
    totalG = reais+","+cent;
    }
}

document.form.TotalGeral.value=totalG;

}else{

switch(valor.length){
case 4:{valor = valor.slice(0,1)+"."+ valor.slice(1,4); break;}
case 5:{valor = valor.slice(0,2)+"."+ valor.slice(2,6); break;}
case 6:{valor = valor.slice(0,3)+"."+ valor.slice(3,7); break;}
case 7:{valor = valor.slice(0,1)+"."+ valor.slice(1,4)+"."+valor.slice(4,8); break;}
}
totalG = valor+",00";
document.form.TotalGeral.value=totalG;

}
}

}
</script>

Mais aí quando testo no FireFox Ou Chrome... Dá:

Erro: document.getElementById("Qtde_" + n) is null

Não é possivel que não haja um alterativa para conseguir a soma no Firefox.

Agraço qualquer ajuda ou dica.

JGD

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Gente,

Ainda sobre getElementsById no FireFox.

Neste 2º caso precisava pegar o valores do campos para multiplicar a quantidade e depois somar tudo tando um valor total geral.

Solução: passei na função o nome dos campos como objetos.

Então ficou assim:

Atribuo os nomes dos campos via laço (neste caso php) o que não "engessa" a quantidade de itens a ser trabalhado.

?>
<tr bgcolor="<?=$nCor?>">
<td align="center"><font size=1><input type="text" name="Qtde_<?=$n?>" onkeypress='return SomenteNumero(event)' size="5" style="text-align: right;" onblur="CalculaItem(document.form.Qtde_<?=$n?>,document.form.Item_<?=$n?>,document.form.Total_<?=$n?>,<?=$n?>);" maxlength="3" value="0"></td>
<td align="center"><font size=1><?=$Cod?><input type="hidden" name="ItemId_<?=$n?>" value="<?=$idProd?>"></td>
<td><font size=1><?=$Produto?></td>
<td align='right'><font size=1><?=$Valor?>&nbsp;<input type="hidden" name="Item_<?=$n?>" value="<?=$Valor?>"></td>
<td><font size=1><input type="text" name="Total_<?=$n?>" id="TI" size="11" readonly style="text-align: right;" maxlength="10" value="0"></td>
</tr>
<?

Depois chamo a função para multiplicar a qtde e depois somo tudo..

function CalculaItem(obj,obj2,obj3,n){

var campo1 = obj.value;

//var campo2 = document.getElementById("Item_"+n).value;

var campo2 = obj2.value;

//alert(campo1+" = "+campo2)

if(campo1==""){

obj3.value="0";

}else{

if(campo1=="0"){

obj3.value="0";

}else{

var var1 = campo1.replace(".","").replace(",",".")

var var2 = campo2.replace(".","").replace(",",".")

var totalG='';

var total = (var2*var1);

if(total <="0.0"){

obj3.value="0";

}else{

var valor=total.toString();

if (valor.indexOf(".")!= -1){

var divisao=valor.split(".");

var reais=divisao[0];

switch(reais.length){

case 4:{reais = reais.slice(0,1)+"."+ reais.slice(1,4); break;}

case 5:{reais = reais.slice(0,2)+"."+ reais.slice(2,6); break;}

case 6:{reais = reais.slice(0,3)+"."+ reais.slice(3,7); break;}

case 7:{reais = reais.slice(0,1)+"."+ reais.slice(1,4)+"."+reais.slice(4,8); break;}

}

var centavos=divisao[1];

var cent=centavos.substring(0,2);

var t = cent.length;

if(cent==""||cent==null){

totalG = reais+",00";

} else {

if(cent.length==1){

totalG = reais+","+cent+"0";

}

if(cent.length==2){

totalG = reais+","+cent;

}

}

obj3.value=totalG;

}else{

switch(valor.length){

case 4:{valor = valor.slice(0,1)+"."+ valor.slice(1,4); break;}

case 5:{valor = valor.slice(0,2)+"."+ valor.slice(2,6); break;}

case 6:{valor = valor.slice(0,3)+"."+ valor.slice(3,7); break;}

case 7:{valor = valor.slice(0,1)+"."+ valor.slice(1,4)+"."+valor.slice(4,8); break;}

}

totalG = valor+",00";

obj3.value=totalG;

}

}

}

}

SomaTotal();

//////////////////////////////////////////////////////////////////////////////

}

Taí uma forma de trabalhar com nomes de campos (dinâmicos) no javascript.

Avaliem e comenta se desejarem.

jgd

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