值更改后,变量未在addeventlistener中更新

时间:2019-07-10 21:02:01

标签: javascript jquery onclick onclicklistener addeventlistener

我将变量设置为false。我也有一个addEventListener,所以当我单击按钮时,它应该向我显示变量的值(真或假)。

我还有另一个按钮,可将变量的值更改为true。因此,当我按下该按钮将其更改为true时,然后使用addEventListener按钮检查该变量的值,它应该反映为true。问题是事实并非如此。

在按下“设置状态”按钮后,它应该警告状态为 true 。为什么价值没有改变?

代码如下:

<button id="button">Set Status</button>
<br>
<button id="check-status">Check Status</button>

<script>
var status = false;

document.getElementById('check-status').addEventListener('click', function(event) {
    if(status === false) {
        alert('The status is false');
    } else {
        alert('The status is true');
    }
});

document.getElementById("button").onclick = function fun() {
    setStatusTrue();
}

function setStatusTrue() {
    var status = true;
}
</script>

演示链接:https://jsfiddle.net/xpLuh0ew/

1 个答案:

答案 0 :(得分:1)

您搞砸了变量的范围。要设置功能范围之外的status变量,请使用:

function setStatusTrue() {
    status = true;
}

您可以阅读有关范围here

的更多信息