jgd Postado Novembro 16, 2010 Denunciar Share Postado Novembro 16, 2010 Gente, Vejam outro codigo que não funciona o FireFoxNo 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 <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 nullNão é possivel que não haja um alterativa para conseguir a soma no Firefox. Agraço qualquer ajuda ou dica. JGD Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jgd Postado Novembro 17, 2010 Autor Denunciar Share Postado Novembro 17, 2010 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?> <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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
jgd
Gente,
Vejam outro codigo que não funciona o FireFox
No html + php atribuo "ID's" a partir de um laço (loop):
Exemplo:
Daí chamo a função para tomar o total do item + o total geral.Mais aí quando testo no FireFox Ou Chrome... Dá:
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
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.