javascript - 值更改后,addeventlistener 中的变量未更新

标签 javascript jquery onclick onclicklistener addeventlistener

我有一个变量设置为false。我还有一个 addEventListener,因此当我单击按钮时,它应该显示变量的值(true 或 false)。

我有另一个按钮可以将变量的值更改为true。因此,当我按下该按钮将其更改为 true,然后使用 addEventListener 按钮检查变量的值时,它应该反射(reflect)为 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/

最佳答案

你搞乱了变量的范围。要设置函数范围之外的 status 变量,请使用:

function setStatusTrue() {
    status = true;
}

您可以阅读有关范围的更多信息 here

关于javascript - 值更改后,addeventlistener 中的变量未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56978585/

相关文章:

javascript - 在 svg 组上模拟点击事件

javascript - 如何在 promise 链中传递参数

javascript - 对于动态添加的元素,动画无法正常工作

jquery - 如何制作一个反射(reflect)逐步表单进展的 jquery/css 进度条?

jquery - 如何在这个 jquery slider 中隐藏文本?

javascript - 用js改变每个按钮的背景颜色

javascript - 为什么要对数字输入按字母顺序排序?

javascript - 如何在 HTML 的特定部分添加和删除 'table'?

javascript - input-group-addon 使用 onclick 更改颜色

ajax - 玛根托 |在类别页面和产品 View 上使用数量增量和 ajax 添加到购物车