Javascript 为什么当我更改或尝试添加另一类输入时,total sum停止工作?
如果我尝试将输入类更改为其他类型,那么val1或val2将停止工作?你知道为什么吗 我想更改第一个和第三个字段,并添加一个if语句,如Javascript 为什么当我更改或尝试添加另一类输入时,total sum停止工作?,javascript,jquery,Javascript,Jquery,如果我尝试将输入类更改为其他类型,那么val1或val2将停止工作?你知道为什么吗 我想更改第一个和第三个字段,并添加一个if语句,如 if ( $val1 <= 20 ) { $total = 0 } else { $total =$val1 * 1 ) * ($val2 * 1)-10);} if($val1首先,让我们讨论命名约定 对于jQuery,元素名称通常以“$”作为前缀,如下所示: var $val1 = $('.val1'); 其中,作为值,不应以相同的前缀开头 var
if ( $val1 <= 20 ) { $total = 0 } else { $total =$val1 * 1 ) * ($val2 * 1)-10);}
if($val1首先,让我们讨论命名约定
对于jQuery,元素名称通常以“$”作为前缀,如下所示:
var $val1 = $('.val1');
其中,作为值,不应以相同的前缀开头
var val1 = $('.val1').val();
我提出这一点的原因是,是的,你可以随意命名,但对于其他人来说,阅读和理解你的代码,遵循约定会更容易
接下来,如果要对该值进行操作,则应将其转换为数值。因此,上面的最后一条语句应为:
var val1 = parseFloat($('.val1').val() || 0);
|| 0
将值中的空字符串转换为零
现在,可以使用a来处理所需的值:
var total = val1 <= 20 ? 0 : (val1 * 1) * (val2 * 1) - 10;
我可能不了解您试图满足的所有要求,但请在此处尝试此演示:
$(文档).ready(函数(){
$(“.calcrow输入”).keyup(多输入);
函数多输出(){
var-mult=0;
//对于每行:
$(“.calcrow”)。每个(函数(){
//从此行获取值:
var val1=parseFloat($('.val1',this.val()| | 0);
var val2=parseFloat($('.val2',this.val()| | 0);
var sm8=parseFloat($('.sm8',this.val()| | 0);
var vu=parseFloat($('.vu',this.val()| | 0);
var总计=(val1*1)*(val2*1);
var sm8T=sm8这是一个无效的HTML结构,因此它永远不会工作。
是错误的。创建一个链接,否则问题就结束了。我添加了一个链接来显示示例好吧……但是HTML是错误的。所以它不工作。代码中的输入和行类在哪里被更改了?感谢莫蒂花时间解释了一些事情,非常感谢Eded.是否可以将三元运算符应用于选定的输出?正如您所示,我只想为输出1创建一个,我想为输出3创建另一个,并保持2和3不变?感谢您的帮助,我能够找到原因,但这一行的.tofixed$(“#grandTotal”).text(mult.tofixed(2));在chrome上不起作用。php:85未捕获类型错误:total.toFixed不是一个函数
var total = val1 <= 20 ? 0 : (val1 * 1) * (val2 * 1) - 10;
$(document).ready(function () {
$(".calcrow input").keyup(multInputs);
function multInputs() {
var mult = 0;
// for each row:
$(".calcrow ").each(function () {
// get the values from this row:
var val1 = parseFloat($('.val1', this).val() || 0);
var val2 = parseFloat($('.val2', this).val() || 0);
var total = val1 <= 20 ? 0 : (val1 * 1) * (val2 * 1) - 10;
$('.multTotal, .sm8',this).text(total.toFixed(2));
mult += total;
});
$("#grandTotal").text(mult.toFixed(2));
}
});
<script>
$(document).ready(function () {
$(".calcrow input").keyup(multInputs);
function multInputs() {
var mult = 0;
// for each row:
$(".calcrow ").each(function () {
// get the values from this row:
var val1 = parseFloat($('.val1', this).val() || 0);
var val2 = parseFloat($('.val2', this).val() || 0);
var sm8 = parseFloat($('.sm8', this).val() || 0);
var vu = parseFloat($('.vu', this).val() || 0);
var total = (val1 * 1) * (val2 * 1);
var sm8T = sm8 <= 20 ? 0 : (sm8 * 1) * (val2 * 1)-10;
var vuT= vu <= 2 ? 0 : (vu * 1) * (val2 * 1)-40;
$('.vuT',this).text(vuT);
$('.sm8T',this).text(sm8T);
$('.multTotal',this).text(total.toFixed(2));
mult += sm8T+vuT+total;
});
$("#grandTotal").text(mult.toFixed(2));
}
});
</script>