Javascript每个函数只对最后一个元素起作用

Javascript每个函数只对最后一个元素起作用,javascript,each,Javascript,Each,对于一个学校支持协会,我必须根据运送的书籍数量(数量限制为20本)和4个不同维度计算费用 所以我假设有一个数组给了我相应的值,问题是基于一个具有特定类的字段的“each”循环只对最后一个元素有效,而不是对所有类元素有效 |-col1-|--col2-|-col3-|--col4-|-col5-|-col6-|-col6-| |-dim1-|-数字-|-费用-|-数字-|-费用-|-数字-|-费用-| |-dim2-|-数字-|-费用-|-数字-|-费用-|-数字-|-费用-| |-dim3-|

对于一个学校支持协会,我必须根据运送的书籍数量(数量限制为20本)和4个不同维度计算费用

所以我假设有一个数组给了我相应的值,问题是基于一个具有特定类的字段的“each”循环只对最后一个元素有效,而不是对所有类元素有效

|-col1-|--col2-|-col3-|--col4-|-col5-|-col6-|-col6-|


|-dim1-|-数字-|-费用-|-数字-|-费用-|-数字-|-费用-|

|-dim2-|-数字-|-费用-|-数字-|-费用-|-数字-|-费用-|

|-dim3-|-数字-|-费用-|-数字-|-费用-|-数字-|-费用-|

|-dim4-|-数字-|-费用-|-数字-|-费用-|-数字-|-费用-|

函数计算(){
$(“.dim”)。每个(函数(){
var idn=$(this.attr(“id”);
变量id=idn.replace(“dim”和“);
var dm=$(this.val();
var nb=$(“#num”+id).val();
对于(var i=0;inb){
$(“#result”).val(myArray[i][2]);
}
if(myArray[i][0]==dm&&myArray[i][3]>nb){
$(“#result”).val(myArray[i][4]);
}
if(myArray[i][0]==dm&&myArray[i][5]>nb){
$(“#result”).val(myArray[i][6]);
}
if(myArray[i][0]==dm&&myArray[i][7]>nb){
$(“#result”).val(myArray[i][8]);
}
if(myArray[i][0]==dm&&myArray[i][9]>nb){
$(“#result”).val(myArray[i][10]);
}
}
});

}

由于您没有提到myArray包含的内容,我认为您应该使用“else if”而不是所有“if”语句。

如果我正确阅读了您的描述,我相信这应该适合您的需要

function calculate(){
  var total = 0
  $(".dim").each(function(){
     var idn = $(this).attr("id");
     var id = idn.replace("dim", "");
     var dm = parseInt($(this).val());
     var nb = parseInt($("#num"+id).val()) -1;
     total += myArray[dm][nb]
  });
  $("#result").val(total);
}

感谢Abhishek,代码只适用于最后一个fledset,我认为“else vs elseif”在这个问题上无关紧要谢谢Bryan但是选择和输入数字给出了错误的值,我想要的是所有字段集的循环工作,而不是最后一个。很抱歉,问题与“每个”函数无关,正是冠状病毒的流行让我失去了理智,问题的解决办法正是消除“每个”功能,多亏了阿披舍克和布莱恩
function calculate(){
  var total = 0
  $(".dim").each(function(){
     var idn = $(this).attr("id");
     var id = idn.replace("dim", "");
     var dm = parseInt($(this).val());
     var nb = parseInt($("#num"+id).val()) -1;
     total += myArray[dm][nb]
  });
  $("#result").val(total);
}