簡體   English   中英

Javascript 將變量和 elementId 傳遞給函數

[英]Javascript passing variable and elementId to an function

 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 個元素。 也許使用數組? 提前致謝

而不是使用document.getElementById()對於每個輸入,您可以使用document.querySelectorAll()[id^=test]選擇所有3並把它們放在一個節點列表(認為它是一個數組)。

[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="">

我不太確定這里的問題是什么,但您不需要創建 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;
}

同樣,由於我們不知道您的代碼細節,因此很難對其進行優化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM