Как получить общее количество «иначе, если» - PullRequest
0 голосов
/ 10 декабря 2018

Как бы я суммировал это?Если я добавлю что-то вроде:

else if (cb1){ event.value[+=][1]this.getField("Totaldays").value*0;
}

Это просто расширяет ответ и не дает мне сумму.Например:

enter image description here

else if (cb1){ event.value=this.getField("Totaldays").value*0;
}
else if (cb2){ event.value=this.getField("Totaldays").value*30; 
}
else if (cb3){ event.value=this.getField("Totaldays").value*20;
}
else if (cb4){ event.value=this.getField("Totaldays").value*0;
}
else if (cb5){ event.value=this.getField("Totaldays").value*40;
}
else if (cb6){ event.value=this.getField("Totaldays").value*0;
}
else if (c7){ event.value=this.getField("Totaldays").value*0;
}

Выше приведен мой текущий код, который не суммирует числа, а просто заменяет предыдущий номер новым отмеченным номером поля. введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 16 декабря 2018

Это можно немного упростить.Понимание того, как возвращаемое значение флажка работает в Acrobat JavaScript, является ключевым.

Когда флажок установлен, он возвращает указанное значение, когда он не отмечен, он возвращает «Выкл.».Таким образом, вы можете установить возвращаемое значение коробки к вашей арендной плате.Кроме того, предполагая, что длительность аренды одинакова для всех предметов, все упрощается до:

var rentaldays = xx // xx is the number of days, not part of this snippet
var rsum = 0 ;
for (var i = 0 ; i < 8 ; i++) {
rsum += this.getField("cb" + i).value.toString.replace(/Off/gim , 0)*1 ;
}
var rentalfee = rentaldays * rsum ; // to be written into a field

и это все.

0 голосов
/ 10 декабря 2018

Используйте оператор += вместо +, чтобы добавить число к промежуточному итогу.

//...
else if (cb1){ event.value += this.getField("Totaldays").value*0; }
else if (cb2){ event.value += this.getField("Totaldays").value*30; }
else if (cb3){ event.value += this.getField("Totaldays").value*20; }
else if (cb4){ event.value += this.getField("Totaldays").value*0; }
else if (cb5){ event.value += this.getField("Totaldays").value*40; }
else if (cb6){ event.value += this.getField("Totaldays").value*0; }
else if (cb7){ event.value += this.getField("Totaldays").value*0; }

Тем не менее, вероятно, есть лучший способ сделать то, что вы хотите сделать.Если вы предоставите немного больше контекста, я могу уточнить для вас свой ответ.

Рассмотрим этот более чистый блок кода, который дает тот же результат, что и код выше, но самодокументирует логику и данные.

let totalDays = this.getField("Totaldays").value;
[
    {checked: cb1, rentalRate:  0},
    {checked: cb2, rentalRate: 30},
    {checked: cb3, rentalRate: 20},
    {checked: cb4, rentalRate:  0},
    {checked: cb5, rentalRate: 40},
    {checked: cb6, rentalRate:  0},
    {checked: cb7, rentalRate:  0}
]
.filter(item => item.checked)
.forEach(item => {
    let rentalFee = item.rentalRate * totalDays;
    event.value += rentalFee;
});
...