Javascript каждая функция работает только для последнего элемента - PullRequest
0 голосов
/ 28 марта 2020

Я должен рассчитать, для ассоциации поддержки школ, сборы, основанные на количестве отгруженных книг (количество ограничено 20), и на основе 4 различных измерений.

Итак, у меня есть массив, который должен дать мне соответствующее значение, проблема в том, что «каждый» l oop основан на поле с определенным классом, работает только для последнего элемента вместо всех элементов класса.

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


| -dim1- | -number- | - сборы- | -number- | -fees- | -number- | -fees-- | ...

| -dim2- | -number- | -fees- | -number- | -fees- | -number- | -fees-- | ...

| -dim3- | -number- | -fees- | -number- | -fees- | -number- | -fees-- | .. .

| -dim4- | -number- | -fees- | -number- | -number- | -fees- | -number- | -fees-- | ...

jsfiddle

function calculate(){
$(".dim").each(function(){
    var idn = $(this).attr("id");
    var id = idn.replace("dim", "");
    var dm = $(this).val();
    var nb = $("#num"+id).val();
    for (var i = 0; i < myArray.length; i++) {
        if (myArray[i][0] == dm && myArray[i][1] > nb) {
            $("#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]);
        }
    }
});

}

Ответы [ 2 ]

0 голосов
/ 29 марта 2020

Если я правильно прочитал ваше описание, я считаю, что это должно соответствовать вашим потребностям.

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);
}
0 голосов
/ 28 марта 2020

Поскольку вы не упомянули, что содержится в myArray, я думаю, что вы должны использовать выражение "else if", а не all "if".

...