首页 > 解决方案 > 每次运行后如何更改 initialValue 的值?

问题描述

我想在每次运行后更改 initialValue 的值 例如:如果我输入 1000,这将使输出为 11,000 (10000 + 1,000),而我减去并输入 2000,这将使输出为 9,000 (11,000 - 2,000 )。有人可以帮我解决我的问题。

function Compute(initialNum, numOne) {
this._initialNum = 10000;
this._numOne = numOne;

this.addNum = function() {
	this._initialNum = +this._initialNum + +this._numOne;
	return this._initialNum;
};

this.minusNum = function() {
	this._initialNum = +this._initialNum - +this._numOne;
	return this._initialNum;
};
}
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>

<input type="hidden" id="persistedResult" value="10000" /><br><br>
<input type="radio" id="rdoAdd" name="rdo">Add<br><br>
<input type="radio" id="rdoMinus" name="rdo">Minus<br><br>
<input type="text" id="txtNumOne"><br><br>
<button onclick="printResult()">Compute</button><br><br>

<table border="1px">
<th>Result</th>

<tbody id = "tblResult">

</tbody>
</table>
<script src="java.js"></script>
<script>

var tblResult = document.getElementById("tblResult");
var personList = [];

function printResult() {
        var display = "";
        var initialValue = parseInt(document.getElementById("persistedResult").value);
        //var objAccount = new Compute(initialValue, numOne);
        var rdoAdd = document.getElementById("rdoAdd");
        var rdoMinus = document.getElementById("rdoMinus");
        var numOne = parseInt(document.getElementById('txtNumOne').value);
        //var numTwo = parseInt(document.getElementById('txtNumTwo').value);
        var objCompute = new Compute(initialValue, numOne);
        personList.push(objCompute);

        console.log(personList);
        var newValue = 0;
        for(var i = 0; i < personList.length; i++) {
            if(rdoAdd.checked) {
                //display += objAccount.addNum(); 
                newValue = personList[i].addNum();
                display = "<tr>";
                display += "<td>" + (newValue) + "</td>";
                display += "<tr>";
                tblResult.innerHTML += display;
            resetx();

            } else if(rdoMinus.checked){
                //display += objAccount.minusNum();
                newValue = personList[i]. minusNum();
                display = "<tr>";
                display += "<td>" + (newValue) + "</td>"; 
                display += "<tr>";
                tblResult.innerHTML += display;
            resetx();
        }
    }
    document.getElementById("persistedResult").value = newValue;
}
	function resetx() {
		document.getElementById('txtNumOne').value = "";
		document.getElementById("rdoAdd").checked = false;
		document.getElementById("rdoMinus").checked = false;
	}
</script>

</body>
</html>

我想在每次运行后更改 initialValue 的值 例如:如果我输入 1000,这将使输出为 11,000 (10000 + 1,000),而我减去并输入 2000,这将使输出为 9,000 (11,000 - 2,000 )。有人可以帮我解决我的问题。

//constructor function
function Compute(initialNum, numOne) {
this._initialNum = 10000;
this._numOne = numOne;

this.addNum = function() {
	this._initialNum = +this._initialNum + +this._numOne;
	return this._initialNum;
};

this.minusNum = function() {
	this._initialNum = +this._initialNum - +this._numOne;
	return this._initialNum;
};
}

//javascript in the body tag
var tblResult = document.getElementById("tblResult");
var personList = [];

function printResult() {
        var display = "";
        var initialValue = parseInt(document.getElementById("persistedResult").value);
        var rdoAdd = document.getElementById("rdoAdd");
        var rdoMinus = document.getElementById("rdoMinus");
        var numOne = parseInt(document.getElementById('txtNumOne').value);
        var objCompute = new Compute(initialValue, numOne);
        personList.push(objCompute);

        console.log(personList);
        var newValue = 0;
        for(var i = 0; i < personList.length; i++) {
            if(rdoAdd.checked) {
                newValue = personList[i].addNum();
                display = "<tr>";
                display += "<td>" + (newValue) + "</td>";
                display += "<tr>";
                tblResult.innerHTML += display;
            resetx();

            } else if(rdoMinus.checked){
                newValue = personList[i]. minusNum();
                display = "<tr>";
                display += "<td>" + (newValue) + "</td>"; 
                display += "<tr>";
                tblResult.innerHTML += display;
            resetx();
        }
    }
    document.getElementById("persistedResult").value = newValue;
}
	function resetx() {
		document.getElementById('txtNumOne').value = "";
		document.getElementById("rdoAdd").checked = false;
		document.getElementById("rdoMinus").checked = false;
	}
<!DOCTYPE html> 
<html>
<head>
<title></title>
</head>
<body>

<input type="hidden" id="persistedResult" value="10000" /><br><br>
<input type="radio" id="rdoAdd" name="rdo">Add<br><br> //rdo for Add
<input type="radio" id="rdoMinus" name="rdo">Minus<br><br> //rdo for Subs
<input type="text" id="txtNumOne"><br><br> 
<button onclick="printResult()">Compute</button><br><br>

<table border="1px">
<th>Result</th>

<tbody id = "tblResult">

</tbody>
</table>

</body>
</html>

我想在每次运行后更改 initialValue 的值 例如:如果我输入 1000,这将使输出为 11,000 (10000 + 1,000),而我减去并输入 2000,这将使输出为 9,000 (11,000 - 2,000 )。有人可以帮我解决我的问题。

function printResult() {
        var display = "";
        var initialValue = 10000;
        //var objAccount = new Compute(initialValue, numOne);
        var rdoAdd = document.getElementById("rdoAdd");
        var rdoMinus = document.getElementById("rdoMinus");
        var numOne = parseInt(document.getElementById('txtNumOne').value);
        //var numTwo = parseInt(document.getElementById('txtNumTwo').value);
        var objCompute = new Compute(initialValue, numOne);
        personList.push(objCompute);

        console.log(personList);

        for(var i = 0; i < personList.length; i++) {
            if(rdoAdd.checked) {
                //display += objAccount.addNum(); 
                display = "<tr>";
                display += "<td>" + (personList[i].addNum()) + "</td>";
                display += "<tr>";
                tblResult.innerHTML += display;
            resetx();

            } else if(rdoMinus.checked){
                //display += objAccount.minusNum();
                display = "<tr>";
                display += "<td>" + (personList[i].minusNum()) + "</td>"; 
                display += "<tr>";
                tblResult.innerHTML += display;
            resetx();
        }
    }
}

//Constructor Function
function Compute(initialNum, numOne) {
this._initialNum = initialNum;
this._numOne = numOne;


this.addNum = function() {
    this._initialNum += this._numOne;
    return this._initialNum;
};

this.minusNum = function() {
    this._initialNum -= this._numOne;
    return this._initialNum;
};
}

标签: javascriptarraysoop

解决方案


由于 HTTP 是无状态的,并且您希望对 2 个不同的操作执行操作,因此您需要将每个操作的结果存储在某个位置。对于最简单的示例,您可以在 HTML 页面上创建隐藏字段。第一次加载 HTML 时,它的值可以是 10000,并在执行每个操作后更新它的值。

假设您的 HTML 中有以下隐藏字段:

<input type=“hidden” id=“persistedResult” value=“10000” />

这是您更新的printResult方法:

function printResult() {
        var display = "";
        var initialValue = parseInt(document.getElementById(‘persistedResult’).value);
        //var objAccount = new Compute(initialValue, numOne);
        var rdoAdd = document.getElementById("rdoAdd");
        var rdoMinus = document.getElementById("rdoMinus");
        var numOne = parseInt(document.getElementById('txtNumOne').value);
        //var numTwo = parseInt(document.getElementById('txtNumTwo').value);
        var objCompute = new Compute(initialValue, numOne);
        personList.push(objCompute);

        console.log(personList);
        var newValue = 0;
        for(var i = 0; i < personList.length; i++) {
            if(rdoAdd.checked) {
                //display += objAccount.addNum(); 
                newValue = personList[i].addNum();
                display = "<tr>";
                display += "<td>" + (newValue) + "</td>";
                display += "<tr>";
                tblResult.innerHTML += display;
            resetx();

            } else if(rdoMinus.checked){
                //display += objAccount.minusNum();
                newValue = personList[i]. minusNum();
                display = "<tr>";
                display += "<td>" + (newValue) + "</td>"; 
                display += "<tr>";
                tblResult.innerHTML += display;
            resetx();
        }
    }
    document.getElementById(‘persistedResult’).value = newValue;
}

注意:这是一个原始示例,用于指导您如何实现数据持久性。一般情况下,数据会保存在服务器上。

此代码处理列表中只有一个人的情况,这是您当前代码示例中的方法。如果您想对一组人进行此操作,则需要增强逻辑。


推荐阅读