所以基本上我想制作一個有 2 個輸入和一個 HTML 按鈕的程式。第一個輸入是起始值(stvalue),第二個輸入是加/減值(value),并輸出一個不斷變化的總和(sum)。因此,當我輸入 2 個值(stvalue)和(value)并單擊按鈕時,它會首先將它們加在一起??(sum),然后我會寫入一個不同的值(value),以便在第二次單擊時從添加的值中減去加起來(總和)。然后如果我輸入另一個值(值)并第三次單擊按鈕,它將添加減去的總和(sum)和我寫的值(value)一起。它會不斷地添加/減去我寫入的值到/從點擊的“總和”值中。
我不知道是否有辦法做到這一點,我嘗試了一些版本,但它們并沒有真正達到我想要的方式。
我設法使功能在單擊時打開并將值相加,但隨后我無法在第二個函式中使用該相加的值,該值將被減去。
var stValue;
var value;
var sum;
function buttonClick() {
var stValue = parseFloat(document.getElementById("stvalue").value);
var value = parseFloat(document.getElementById("value").value);
var sum = stValue value;
console.log(sum);
this.onclick = notButtonClick; //function reference to nBC
}
function notButtonClick() {
var value = parseFloat(document.getElementById("value").value);
var sum = sum - value;
console.log(sum);
this.onclick = buttonClick; //function reference to original function
}
var el = document.getElementById("button"); //let for ES6 aficionados
el.onclick = buttonClick; //again, function reference, no ()
<input id="stvalue" type="number" placeholder="kezdo" />
<input id="value" type="number" placeholder="ertek" />
<button id="button" onclick="buttonClick()">Start</button>
我希望我能夠很好地解釋它,并且不會太混亂。謝謝你的時間,我真的很感激。
uj5u.com熱心網友回復:
要將事件處理程式分配給事件,并在分配時傳遞引數,請執行回傳函式的函式,然后將其作為事件處理程式提供給下一個事件分配。這使用函式封裝使引數可用于下一次事件執行。
let stValue, value, sum;
function buttonClick (sum, val) {
return function () {
let stValue = (undefined === sum)
? parseFloat(document.getElementById("stvalue").value)
: sum;
let value = (undefined === val)
? parseFloat(document.getElementById("value").value)
: val;
let ret = stValue value;
console.log(ret);
this.onclick = notButtonClick(sum, val);
}
}
function notButtonClick (sum, val) {
return function () {
let stValue = (undefined === sum)
? parseFloat(document.getElementById("stvalue").value)
: sum;
let value = (undefined === val)
? parseFloat(document.getElementById("value").value)
: val;
let ret = stValue - value;
console.log(ret);
this.onclick = buttonClick(sum, val);
}
}
var el = document.getElementById("button").onclick = buttonClick();
<input id="stvalue" type="number" placeholder="kezdo" />
<input id="value" type="number" placeholder="ertek" />
<button id="button" onclick="buttonClick()">Start</button>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/511538.html
