javascript - 从 addEventListener 中获取变量值

标签 javascript click addeventlistener

在函数“clickListener”运行后,如何更新变量“clicked”的值?这绝对是“clicked”变量范围的问题。

var clicked = 'no';
focus();
listener = addEventListener('blur', clickListener);
function clickListener(){
    if(document.activeElement == document.getElementById('someIframe')){
        clicked = 'yes';
        console.log(clicked);
    }
};

每当我运行此命令时,控制台都会记录"is",但如果我在单击发生后检查变量,则单击的“外部”仍然是“否”。

<小时/>

这是我的问题的 JSFiddle: https://jsfiddle.net/6c3nbpk5/4/

  1. 打开控制台
  2. 注意 DIV“消息”的状态(“未点击”)
  3. 点击 iframe 中显示“点击我”的位置
  4. 请注意,控制台显示“Div Message: Clicked”
  5. 注意函数内的变量应更新为由控制台单击确认
  6. Note Div“消息”仍然显示未点击。

我需要 divMessage 来更新为已点击。但是,所有这些都在跟踪多个 iframe 的函数内,因此我无法将变量附加到窗口。

最佳答案

JavaScript 是函数作用域的,如果它在当前函数作用域中没有找到定义,它将检查外部作用域等等。

您实际上是在内部函数中更改外部clicked 的值。

但是,这可能看起来有点棘手 - 请参阅此处了解时机 - https://jsfiddle.net/6c3nbpk5/1/ .

var clicked = 'no';
window.addEventListener('click', clickListener);
function clickListener(){
        clicked = 'yes';
        window.alert(clicked);
};
window.alert(clicked);

关于javascript - 从 addEventListener 中获取变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37104436/

相关文章:

java - Android Studio 禁用点击声音

html - 如何在点击时切换 CSS3 Accordion

javascript - 为同一事件添加事件监听器

javascript - 为什么在脚本末尾执行 Sourceopen 事件监听器?

javascript - Jquery .parents 定位问题

javascript - 如何删除正则表达式中特殊字母后的括号

jquery - 使用 Jquery 在 Canvas 中单击两次鼠标绘制一条线

JavaScript selectionchange-EventListener,在document.execCommand上无限触发

javascript - 单击时图像叠加效果

javascript - Node/JavaScript glob 文件/路径匹配语法、通配符等