这可能不是一个简单的问题,因为我的JavaScript技能非常有限。我要做的就是修改函数中的变量,然后返回新的变量值,准备再次在函数中使用。

一个简单的按钮就是一个例子,每次单击该按钮都会从变量中扣除十点。就像每次点击都逐步倒数一样。问题在于该变量不会在每次返回时更新。

也许我开始使用javascript的方法是出路,这就是为什么我似乎无法对此找到更多信息的原因。这是代码

<html>
<head>
<script type="text/javascript">

/*starting bank account*/
var bank = "200";
/* i want this function to deduct ten from the starting bank account and update the bank variable */
function Bank(bank) {
    var printout = document.getElementById("display_bank_result_here");
    bank = bank - 10;
    printout.innerHTML = bank;
    return bank;
}


</script>
</head>
<body>
<button onclick="Bank(bank)">remove 10 from bank</button>
<p id='display_bank_result_here'></p>
</body>
</html>


先发制人的感谢大家。我希望有一天,我将有足够的技能将青睐中的人回报给其他人。

罗伯特

最佳答案

那是因为您shadowed变量bank

在函数Bank中,bank变量是指本地变量,而不是全局变量。使用函数的return值更新全局变量后,这应该不成问题:

<button onclick="bank = Bank(bank)">remove 10 from bank</button>


当然,您也可以解决它避免出现阴影,例如:

function Bank () {
    var printout=document.getElementById("display_bank_result_here");
    bank -= 10;

    printout.innerHTML =bank;
}


然后,不需要return

另外,您完全可以避免使用全局变量,将printout用作起始值:

<button onclick="decreaseBank()">remove 10 from bank</button>
<p id='display_bank_result_here'>200</p>


您的JS将如下所示:

function decreaseBank () {
    var printout = document.getElementById("display_bank_result_here");

    // with subtraction the value of `innerHTML` will be converted in Number
    // automatically.
    var bank = printout.innerHTML - 10;

    printout.innerHTML = bank;
}


希望能帮助到你。

关于javascript - 更新现有的JavaScript变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11494202/

10-12 00:10
查看更多