Выполнение на одной странице двух функций javascript?

Есть две простые функции которые должны выполнятся на одной странице. Как правильно написать код, чтобы функции выполнялись на странице одновременно не мешая друг другу?
Первая:
oninput = function doCalc()
{
  var a=Number(document.getElementById("itemPrice").value);
  var b=Number(document.getElementById("EMC").value);
  var c=Number(document.getElementById("amount").value);
  var d=Number(document.getElementById("koef").value);
  var v=(c*a+b)*0.1+c*a+b;
  var f=v*d
  var x=(f*0.02+f)+((f*0.02+f)*0.22)
  if(x>=0 && v<=10000) {
     document.getElementById("result").innerHTML=x.toFixed(2);
  }
}

и вторая:
oninput = function () {
  var W = Number(document.getElementById("itemweight").value);
  var Wresult = W * 14;
  if(Wresult >= 0 && Wresult <= 10000) {
     document.getElementById("resultWeight").innerHTML=Wresult.toFixed(2);
  }
};
  • Вопрос задан
  • 654 просмотра
Решения вопроса 1
@dmz9
они в любом случае будут выполняться последовательно (даже если их именовать по разному). но можно чуть упростить и вообще сделать их безымянными
oninput = function() {
    (function() {
        var a = Number(document.getElementById("itemPrice").value);
        var b = Number(document.getElementById("EMC").value);
        var c = Number(document.getElementById("amount").value);
        var d = Number(document.getElementById("koef").value);
        var v = (c * a + b) * 0.1 + c * a + b;
        var f = v * d
        var x = (f * 0.02 + f) + ((f * 0.02 + f) * 0.22)
        if (x >= 0 && v <= 10000) {
            document.getElementById("result").innerHTML = x.toFixed(2);
        }
    }()),
    (function() {
        var W = Number(document.getElementById("itemweight").value);
        var Wresult = W * 14;
        if (Wresult >= 0 && Wresult <= 10000) {
            document.getElementById("resultWeight").innerHTML = Wresult.toFixed(2);
        }
    }())
}

это конструкция "мгновенно исполняемой функции", когда пишешь типа (function(){}()), из последних скобок аргументы прилетают в функцию, обозначеную перед ними и функция выполняется. пустые скобки - ну значит аргументов нет, просто берем и выполняем. в этом случае нам даже имя давать не надо (лямбда-функция), они просто по порядку выполнятся с пустыми аргументами.
и раз попёрла такая мазута - можно даже запятую между этими выражениями поставить чтобы логически было "сначала 1, потом 2". она ни на что не влияет, просто для красоты
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы