[英]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.