У меня есть javascript, который рассчитывает процент от двух полей (розничная и сетевая), а затем сбрасывает этот процент в другое поле (разметка).
Поскольку я относительно новичок в мире JS, в итоге я использовал код для нескольких строк полей. Это идет вразрез с принципами DRY и KISS, поэтому мне было интересно, не могли бы вы дать мне некоторую информацию о том, как оптимизировать мой код, чтобы он мог обрабатывать любые два поля, а затем вывести значение в третье поле.
Вот скриншот моего сегмента формы, который его использует.
http://i.imgur.com/FHvDs.png
![enter image description here](https://i.stack.imgur.com/hG5zy.png)
Вот мой код, который я использую, мне пришлось использовать его четыре раза и поместить код в четыре функции, например. (процент1, процент2, процент3, процент4) каждая из этих функций работает со строкой полей, показанных на скриншоте.
function percentage1()
{
//the dividee
x = document.getElementById('tariff_data');
//the divider
y = document.getElementById('network_data');
//if the first value is lower than the second, append a "-" sign
if (x.value < y.value)
{
z = "-"+(x.value/y.value)*100;
document.getElementById('markup_data').value = z;
}
//not a negative percentage
else
{
z = (x.value/y.value)*100;
document.getElementById('markup_data').value = z;
}
}
function percentage2()
{
//the dividee
x = document.getElementById('tariff_rental');
//the divider
y = document.getElementById('network_rental');
//if the first value is lower than the second, append a "-" sign
if (x.value < y.value)
{
z = "-"+(x.value/y.value)*100;
document.getElementById('markup_rental').value = z;
}
//not a negative percentage
else
{
z = (x.value/y.value)*100;
document.getElementById('markup_data').value = z;
}
}
etc etc....
Эти функции вызываются с помощью атрибута onchange HTML
Кроме того, когда я делю на десятичное число, это дает неправильное значение, какие-либо идеи, как заставить его вычислить правильный процент десятичного числа?
Мой код также выдает эти странные выводы:
NaN, Бесконечность
Спасибо