2015-12-28 46 views
3

没有马瑟我写在输入字段什么,我只甚至从页面加载,我得到NaN的的Javascript总和字段错误的NaN

任何想法,为什么得到喃?我需要数量*以价格并给出结果,这里是代码。我将显示现在的代码

<form action="?F=save-sale" method="post" name="venta"> 
<table class="table-global"> 
     <tr> 
     <td class="table-global-td-title">Cantidad 

     </td> 
     <td class="table-global-td-title">Precio venta</td> 
     <td class="table-global-td-title">Vendedor</td> 
     <td class="table-global-td-title">Documento</td> 

     <td class="table-global-td-title">M&eacute;todo de pago</td> 
     <td class="table-global-td-title">Suma total</td> 
     <td class="table-global-td-title"></td> 
     </tr> 
     <tr> 
     <td class="table-global-td-subtitle"><input type="number" class="input-global-100" name="cantidad" id="cantidad">   </td> 
      <td class="table-global-td-subtitle"><input type="number" class="input-global-100" name="venta" id="venta" value="0"></td> 
      <td class="table-global-td-subtitle"> 
      <select style="text-transform:capitalize" class="select-global-120" name="vendedor" id="vendedor"> 

    <option value="" selected>Seleccionar</option> 
    <option value="001">001</option> 

</select>   </td> 
     <td class="table-global-td-subtitle"> <select class="select-global-132" name="comprobante" id="comprobante"> 


      <option value="Boleta" selected>Boleta</option>   
      <option value="Factura">Factura</option> 


      </select>  </td> 
     <td class="table-global-td-subtitle"><select class="select-global-120" name="metodo" id="metodo" > 
      <option value="Transferencia">Transferencia</option> 

      <option value="Efectivo" selected>Efectivo</option> 
      <option value="Cheque">Cheque</option> 
      <option value="Transbank">Transbank</option> 



     </select></td> 
     <td class="table-global-td-subtitle"> 

      <input type="text" class="input-global-total-100" name="ventatotal" id="ventatotal" readonly value="0" />  </td> 
     <td class="table-global-td-subtitle"> 
     <input class="submit-global-120" type="submit" value="Realizar la venta" /></td> 
     </tr> 
     </table> 

<script> 
var aacosto = document.getElementsByName('costo')[0]; 
var aacostototal = document.getElementsByName('costototal')[0]; 
var aaventa  = document.getElementsByName('venta')[0]; 
var aaventatotal = document.getElementsByName('ventatotal')[0]; 
var aacantidad = document.getElementsByName('cantidad')[0]; 
var aaganancia = document.getElementsByName('ganancia')[0]; 
var aagananciatotal = document.getElementsByName('gananciatotal')[0]; 

function updateInput() { 
aaventatotal.value = parseFloat(aaventa.value) * parseFloat(aacantidad.value); 

} 

aaventa.addEventListener('keyup', updateInput); 
aaventatotal.addEventListener('change', updateInput); 
aacantidad.addEventListener('keyup', updateInput); 
updateInput(); 
</script> 
</form> 

这里是一个小提琴所以你们可以看到它的工作

https://fiddle.jshell.net/v6spxoqv/10/

+0

是您的脚本在''元素的底部?如果没有,请将它移动到那里,或者将所有'var'语句放入函数_中。 – Xufox

+0

没有在HTML表格里面的代码中间 – Locatarios

+0

但是不在输入字段下?然后HTML元素尚未加载。只需将脚本放在HTML表单的输入框中即可。 – Xufox

回答

2

只要有计算产品之前,这个条件if (aaventa.value && aacantidad.value)。它确保值不是。其他一切都很好。

var aaventa = document.getElementsByName('venta')[0]; 
 
var aaventatotal = document.getElementsByName('ventatotal')[0]; 
 
var aacantidad = document.getElementsByName('cantidad')[0]; 
 

 
function updateInput() { 
 
    if (aaventa.value && aacantidad.value) 
 
    aaventatotal.value = parseFloat(aaventa.value) * parseFloat(aacantidad.value); 
 
    else 
 
    aaventatotal.value = 0; 
 

 
} 
 

 
aaventa.addEventListener('keyup', updateInput); 
 
aaventatotal.addEventListener('change', updateInput); 
 
aacantidad.addEventListener('keyup', updateInput); 
 
updateInput();
<input name="venta"> 
 
<input name="cantidad"> 
 
<input name="ventatotal">

+0

为什么这个downvote?谨慎解释? – void

+0

@Xufox如果DOM中的元素不是*,那么'element.value'会抛出一个错误。 – andlrc

+0

这将是一个痛苦,如果我需要更多的输入更新... – Locatarios

0
<input id="venta"> 
<input id="cantidad"> 
<input id="ventatotal"> 

使用jQuery

$('#venta').change(function(){ updateInput() ;}); 
$('#cantidad').change(function(){ updateInput() ;}); 
$('#ventatotal').change(function(){ updateInput() ;});