将变量和elementId传递给函数的Javascript

时间:2019-03-16 00:36:21

标签: javascript

var ingaveA = {
  stuks: ""
};
var ingaveB = {
  prijs: ""
};
var uitgave = {
  totaal: ""
};

update(ingaveA, "testa", ingaveB, "testb", uitgave, "testc");

function update(refA, argsA, refB, argsB, refC, argsC) {

  refA.stuks = document.getElementById(argsA).value;
  refB.prijs = document.getElementById(argsB).value;
  refC.totaal = refA.stuks * refB.prijs;
  document.getElementById(argsC).value = refC.totaal;
}

ingaveA = ingaveA.stuks;
ingaveB = ingaveB.prijs;
uitgave = uitgave.totaal;
alert("Stuks=" + ingaveA + " Prijs=" + ingaveB + " Totaal=" + uitgave);
<input id="testa" value="10">
<input id="testb" value="6">
<input id="testc" value="">

有更好的方法吗?总是3个变量名和3个元素。 也许使用数组? 预先感谢

2 个答案:

答案 0 :(得分:0)

您可以使用document.querySelectorAll()document.getElementById()来选择所有3个并将其放在NodeList中(而不是每个输入使用[id^=test](将其视为一个数组) )。

[id^=test]表示以test开头的每个ID

您还可以制作一个通用对象,并根据需要进行更新,如下所示。

var ingave = {
  ingaveA: {
    stuks: ""
  },
  ingaveB: {
    prijs: ""
  },
  uitgave: {
    totaal: ""
  }
};
var inputs = document.querySelectorAll("[id^=test]");

update(ingave, inputs);

function update(ref, inputs) {
  ref.ingaveA.stuks = inputs[0].value;
  ref.ingaveB.prijs = inputs[1].value;
  ref.uitgave.totaal = ref.ingaveA.stuks * ref.ingaveB.prijs;
  inputs[2].value = ref.uitgave.totaal;
}

var ingaveA = ingave.ingaveA.stuks;
var ingaveB = ingave.ingaveB.prijs;
var uitgave = ingave.uitgave.totaal;
alert("Stuks=" + ingaveA + " Prijs=" + ingaveB + " Totaal=" + uitgave);
<input id="testa" value="10">
<input id="testb" value="6">
<input id="testc" value="">

答案 1 :(得分:0)

我不太确定这里的问题是什么,但是您不需要创建3个单独的对象。

let ingaveA = ""
let ingaveB = ""
let uitgave = ""

然后只需将这3个传递给您的函数:

function update(refA, refB, refC) {

  refA = document.getElementById("testa").value;
  refB = document.getElementById("testb").value;
  refC = refA * refB;
  document.getElementById("testc").value = refC.totaal;
}

同样,由于我们不知道您的代码细节,因此很难对其进行优化。