Tenho um código que ao eu inserir o produto e a quantidade ele automaticamente quando estou prrenchendo o campo ja vai me calculando os valores em subtotal e total.
Porem ele mantem os valores de frete e desconto apenas da primeira linha, quando eu insiro uma linha nova ("tem um botão de inserir campo") ele nao muda os valores.
Como faço para ele pegar o campo correto?
Tente adicionar dois registros e depois apagar o frete da segunda linha ou adicionar outra diferente.
Esta muito dificil isso para mim e olha que nem comecei a fazer os calculos ainda direito.
Agradeço toda a ajuda que puderem me dar.
<script type="text/javascript">
//Total máximo de campos que você permitirá criar em seu site:
var totalCampos = 30;
//Não altere os valores abaixo, pois são variáveis controle;
var iLoop = 1;
var iCount = 1;
var linhaAtual;
function AddCampos() {
//Executar apenas se houver possibilidade de inserção de novos campos:
if (iCount < totalCampos) {
var objTr = document.getElementById("linha"+iCount);
objTr.style.display = "";
iCount++;
}
}
function ResetCampos() {
//Executar apenas se houver possibilidade de inserção de novos campos:
if (iCount > totalCampos) {
var objTr = document.getElementById("linha"-iCount);
objTr.style.display = "";
iCount--;
}
}
function somar(el) {
var objItem = document.getElementById("sel"+el);
var objQtde = document.getElementById("qtde"+el);
var objVunit = document.getElementById("vUnit"+el);
var objVtot = document.getElementById("vTot"+el);
var SubTot = document.getElementById("subTotal");
var objFrete = document.getElementById("frete");
var objDesc = document.getElementById("decapagem");
var objTotal = document.getElementById("total");
if (objItem.value != "") {
objVunit.value = objItem.value;
var total = (parseFloat(objItem.value)*parseFloat(objQtde.value)+parseFloat(objDesc.value)+parseFloat(objFrete.value));
objVtot.value = total.toFixed(2);
}else{
objVunit.value = "0.00";
objVtot.value = "0.00";
}
var calcSubTotal = 0;
for (iC = 1; iC<=totalCampos; iC++) {
calcSubTotal += parseFloat(document.getElementById("vTot"+iC).value);
}
SubTot.value = calcSubTotal.toFixed(2);
calcTotal = (calcSubTotal);
objTotal.value = calcTotal.toFixed(2);
}
</script>
</head>
<body>
<form name="form1" action="paginaPHPouASP" method="post">
<table border="0">
<tr>
<td width="200px">Produto</td>
<td width="100px">Quantidade</td>
<td width="100px">Preço de Tabela</td>
<td width="100px">SubTotal</td>
<td width="100px">Corte + Dec</td>
<td width="100px">Frete</td>
</tr>
<script type="text/javascript">
//Escrevendo o código-fonte HTML e ocultando os campos criados:
for (iLoop = 1; iLoop <= totalCampos; iLoop++) {
var linha = "";
if (iLoop <=1) {
visualizar = "";
} else {
visualizar = "none";
}
linha += "<tr id='linha"+iLoop+"' style='display:"+visualizar+"'>";
linha += "<td width='200px'>";
linha += "<select id='sel"+iLoop+"' onchange='somar("+iLoop+")'>";
linha += "<option value=''>---</option>";
linha += "<option value='2650.00'>FQ.01</option>";
linha += "<option value='2480.00'>FQ.02</option>";
linha += "<option value='3300.00'>FQ.06</option>";
linha += "<option value='3200.00'>FQ.07</option>";
linha += "<option value='2750.00'>FQ.08</option>";
linha += "</select>";
linha += "</td>";
linha += "<td width='100px'>";
linha += "<select id='qtde"+iLoop+"' onchange='somar("+iLoop+")'><option value='0'>0</option><option value='1'>1</option><option value='2'>2</option><option value='3'>3</option><option value='4'>4</option><option value='5'>5</option></select>";
linha += "</td>";
linha += "<td width='100px'>";
linha += "<input type='text' id='vUnit"+iLoop+"' readonly='readonly' value='0.00'>";
linha += "</td>";
linha += "<td width='100px'>";
linha += "<input type='text' id='vTot"+iLoop+"' readonly='readonly' value='0.00'>";
linha += "</td>";
linha += "<td><input type='text' name='decapagem' id='decapagem' value='35.00' onkeyup='somar("+iLoop+")'></td>";
linha += "<td><input type='text' name='frete' id='frete' value='50.00' onkeyup='somar("+iLoop+")'></td>";
linha += "<td><input type='button' value='Remover campo' onclick='RemoverCampos("+iLoop+")'></td>";
linha += "</tr>";
document.write (linha);
}
function RemoverCampos(id) {
//Criando ponteiro para hidden1:
var hidden1 = document.getElementById("decapagem");
//Pegar o valor do campo que será excluído:
var campoValor = document.getElementById("decapagem").value;
//Se o campo não tiver nenhum valor, atribuir a string: vazio:
if (campoValor == "") {
campoValor = "vazio";
}
{
document.getElementById("linha"+id).style.display = "none"; iCount--;
//Removendo o valor de hidden1:
if (hidden1.value.indexOf(",linha"+id) != -1) {
hidden1.value = hidden1.value.replace(",linha"+id,"");
}else if (hidden1.value.indexOf("linha"+id+",") == 0) {
hidden1.value = hidden1.value.replace("linha"+id+",","");
}else{
hidden1.value = "";
}
}
}
</script>
<tr>
<td> </td>
<td> </td>
<td>Sub-total:</td>
<td><input type="text" id="subTotal" readonly='readonly' value="0.00"></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td>Total:</td>
<td><input type="text" id="total" readonly='readonly' value="0.00"></td>
</tr>
</table>
<input type="button" value="Adicionar campos" onclick="AddCampos()">
<input type="hidden" name="hidden2" id="hidden2">
<br><br>
<br><br>
</form>
Fábio Sanches Carmona