Dom jQuery加法函数给了我NaN
我正在使用以下函数将我的所有行总计相加。每个总数将是一个十进制数字,如23.45。当用户在任何文本输入框中输入任何数量时,它应该会启动该功能,但我现在在grandtotal中得到的只是NaN,是谁NaN,她为什么要搞乱我的脚本 顺便说一句,每个行总计都是一个范围,一旦在“数量”文本框中输入了数量,该范围将填充行总计计算 基本上,用户从第1行下拉列表中选择一个价格,比如说20.00,然后将数量输入文本框qty,比如说2,jQuery然后将qty乘以priceeach,输出到id为linetotal1的范围中。我想做的是将所有的linetotals相加,得到一个总计,但假设它们没有在第2行中输入任何内容,linetotal2、3、4、5将为空Dom jQuery加法函数给了我NaN,dom,jquery,Dom,Jquery,我正在使用以下函数将我的所有行总计相加。每个总数将是一个十进制数字,如23.45。当用户在任何文本输入框中输入任何数量时,它应该会启动该功能,但我现在在grandtotal中得到的只是NaN,是谁NaN,她为什么要搞乱我的脚本 顺便说一句,每个行总计都是一个范围,一旦在“数量”文本框中输入了数量,该范围将填充行总计计算 基本上,用户从第1行下拉列表中选择一个价格,比如说20.00,然后将数量输入文本框qty,比如说2,jQuery然后将qty乘以priceeach,输出到id为linetotal
<script>
$(document).ready(function () {
$('input').on('keyup', function () {
linetotal1 = $('#linetotal1').text(),
linetotal2 = $('#linetotal2').text(),
linetotal3 = $('#linetotal3').text(),
linetotal4 = $('#linetotal4').text(),
linetotal5 = $('#linetotal5').text(),
grandtotal = parseFloat(linetotal1) + parseFloat(linetotal2) + parseFloat(linetotal3) + parseFloat(linetotal4) + parseFloat(linetotal5);
$('#grandtotal').text(grandtotal);
}); });
</script>
$(文档).ready(函数(){
$('input')。在('keyup',函数(){
linetotal1=$('#linetotal1')。text(),
linetotal2=$('#linetotal2')。text(),
linetotal3=$('#linetotal3')。text(),
linetotal4=$('#linetotal4')。text(),
linetotal5=$('#linetotal5')。text(),
grandtotal=parseFloat(linetotal1)+parseFloat(linetotal2)+parseFloat(linetotal3)+parseFloat(linetotal4)+parseFloat(linetotal5);
$(#grandtotal').text(grandtotal);
}); });
您应该通过循环执行此操作,我以前为我的客户执行过此操作,请检查我的代码是否对您有帮助
var disValue = new Array();
var this_size = document.getElementsByName("myVal").length;
sum = 0;
for (i=0; i<this_size; i++)
{
disValue[i] = document.getElementsByName("myVal")[i].value;
}
for (i=0; i<this_size; i++)
{
sum = parseFloat(sum)+ parseFloat(disValue[i]);
}
if (sum != 0) {
document.getElementById("disc_test").innerHTML="<?php echo $this->__('You are saving') ?> "+sum +" <?php echo $this->__('on this order') ?>!";
}
var disValue=new Array();
var this_size=document.getElementsByName(“myVal”).length;
总和=0;
对于(i=0;i您可以从1-5循环,如果是空字符串,则将值默认为0
:
var rawValue, grandtotal = 0;
for(var i=1; i<6; i++)
{
rawValue = $.trim($('#linetotal' + i).text());
if(rawValue == '') rawValue = 0;
grandtotal += parseFloat(rawValue);
}
$('#grandtotal').text(grandtotal);
如果任何parseFloat
调用返回NaN
,结果将是NaN
。如果无法将输入转换为数字,则返回该值。例如parseFloat(“”)
返回NaN
。如何向每个调用添加一个If为空,这样它就会忽略它?哈哈哈…“谁是NaN”…epic…不管怎样,你说的文本框对吗?那么你必须使用$(…).val()
而不是text()
.linetotal是包含通过将两个其他元素添加到一起而生成的内容的跨距。我正在将每个跨距的内容添加到一起,但在对该行进行计算之前,某些跨距将为空。linetotal1=parseFloat($('#linetotal1').text())| 0,尝试了此操作。$(文档)。就绪(函数(){$('input')。打开('keyup',function(){var rawValue,grandtotal=0;for(var i=1;iAh,我在grandtotal
中有一个大写的T,我已经编辑好了。还添加了demo。哇,很酷,谢谢你,第二个很好用!)
var rawValue, grandtotal = 0;
$('span[id^="linetotal"]').each(function(i, elem){
rawValue = $.trim($(this).text());
if(rawValue == '') rawValue = 0;
grandtotal += parseFloat(rawValue);
});
$('#grandtotal').text(grandtotal);