Javascript乘法与另一个单元格中存储的值

Javascript乘法与另一个单元格中存储的值,javascript,jquery,coldfusion,multiplication,Javascript,Jquery,Coldfusion,Multiplication,更新:最终修复: $('.gasamount').sum(); var num = $(this).attr("id").replace(/[A-Za-z$,-]/g, ""); $('#gasmoney'+num).val(<cfoutput>#mileage#</cfoutput> * $(this).val()); $('.gasmoney').sum(); $('.gasamount').sum()

更新:最终修复:

        $('.gasamount').sum();
        var num = $(this).attr("id").replace(/[A-Za-z$,-]/g, "");
        $('#gasmoney'+num).val(<cfoutput>#mileage#</cfoutput> * $(this).val());
        $('.gasmoney').sum();
$('.gasamount').sum();
var num=$(this.attr(“id”).replace(/[A-Za-z$,-]/g,”);
$(“#汽油钱”+num).val(#英里数#*$(this.val());
$('.gasmoney').sum();

我一直在努力实现的目标:

  • 为一行单元格创建一个设置值
  • 将用户值乘以存储量
  • 获取该结果,并在下一行的单元格正下方显示该值
我好像没法让它工作。每次我认为我很接近时,我都返回对象或未定义的值

Javascript


$('.calc').change(函数(){
var classArray=$(this.attr('class').split('');
$.each(类数组,函数(){
var totalsum=$('..+this.sum();
$('.ttl'+this.val(Number(totalsum).toFixed(2));
var气体=$('.gasamount4');
var gasAmt=gas.val()*#里程#;
var gasTot=$('gasmoney4').val(gasAmt);
加斯托;
警惕(加斯托);
});
//寻找总数
var grandTotal=$('.row26').parent().children('td:last').children('input');
var sum=$('.row25').parent().children('td').children('.calc').sum();
总计.val(数量(总和).toFixed(2));
});
ColdFusion/HTML



#标签[r]#
#左(星期一,3)#
全部的

如果有什么不清楚的,尽管问,我会尽力提供更多的信息。谢谢。

根据代码,我推测您希望获取“个人汽车里程”行中每个单元格中的数字,乘以用户的里程率,然后将结果放入“个人汽车里程$”行中相应的单元格中

试试这个:

$('input.R4').change(function () {
    var val = this.value,
    cell = this.className.match(/C\d+/)[0];

    val = parseInt(val, 10);
    val *= <cfoutput>#mileage#</cfoutput>;
    $('td.row5 input.' + cell)[0].value = val.toFixed(2);
});
$('input.R4')。更改(函数(){
var val=此.val值,
cell=this.className.match(/C\d+/)[0];
val=parseInt(val,10);
val*=#里程#;
$('td.row5 input.'+单元格)[0].value=val.toFixed(2);
});
编辑:

$('input.R4')应该选择每一个类为“R4”的输入元素,因此这将是“Personal Car Mirelation#”行上的每一个输入元素

“cell”变量(回想起来,名称很差)捕获了刚刚更改的单元格的列。因此,如果您更改第一个输入框,这将是“C1”

因此,$('td.row5 input.C1')将在表的第五行(“Personal Car miliety$”行)捕获类为“C1”的输入,并将其值设置为计算的金额

因此,它应该已经对行中的每个单元格起作用了。这是可能的,因为您已经为行、单元格和输入元素指定了有用的类名——但请注意,数值可能会在以后的某个日期更改。如果在您之后有人在表中插入新行,从而抛出数字,则此代码可能会中断

在这些东西上加上“gasamountX”和“gasmoneyX”是正确的,但我认为你应该去掉它们的数字。如果您这样做,您可以将代码更改为:

$('input.gasamount').change(function () {
    var val = this.value,
    column = this.className.match(/C\d+/)[0];

    val = parseInt(val, 10);
    val *= <cfoutput>#mileage#</cfoutput>;
    $('input.gasmoney.' + column)[0].value = val.toFixed(2);
});
$('input.gasamount')。更改(函数(){
var val=此.val值,
column=this.className.match(/C\d+/)[0];
val=parseInt(val,10);
val*=#里程#;
$('input.gasmoney.'+列)[0].value=val.toFixed(2);
});

有意义吗?

一个实际的问题描述将是一个良好的开端。:)有一个目标是好的,但是在不知道是怎么回事的情况下破译别人的代码并不那么有效,至少对我来说。。。。这是我的密码。。如果你指的是“我会尽我所能提供任何附加信息”,那是为了防止有人不熟悉coldfusion之类的。。顺便说一句,有一个问题。“我一直在努力”,换句话说,我不能。程序员通常有firebug,因此他们应该能够自己看到其他代码。不过谢谢你。查看html输出总是比较容易,而不是服务器端的东西。您是否使用了console.log(totalSum)和console.log(gasTot)以及console.log(grandTotal)来查看数学分解的位置?是的,但我得到了相同的结果。对象和空字符串。不过,谢谢你,没有多少人使用这些宝贵的资源进行调试。老实说,对那些可能帮助你的人发脾气并不是问题。得到以“从代码中,我推测…”开头的答案几乎证明了这个问题缺少一些细节。克里斯,非常感谢你的输入!我添加了这个并测试了它。它似乎在为单个细胞工作。我要做一些改变,看看我能想出什么。克里斯,你知道它如何在整行的每个细胞中工作吗。例如,我会使用“.gasamount”+this?来代替“input.R4”,这是有意义的,但不是它。我要改变一下我的方法。当我做出改变时,我会发布它。我想出了解决这个问题的办法。我添加了两个不同的ID,并能够以这种方式进行操作。查看新代码。
$('input.R4').change(function () {
    var val = this.value,
    cell = this.className.match(/C\d+/)[0];

    val = parseInt(val, 10);
    val *= <cfoutput>#mileage#</cfoutput>;
    $('td.row5 input.' + cell)[0].value = val.toFixed(2);
});
$('input.gasamount').change(function () {
    var val = this.value,
    column = this.className.match(/C\d+/)[0];

    val = parseInt(val, 10);
    val *= <cfoutput>#mileage#</cfoutput>;
    $('input.gasmoney.' + column)[0].value = val.toFixed(2);
});