如何更新变量的值"点击"在函数" clickListener"运行?对于"点击"它肯定是一个问题。变量的范围。
var clicked = 'no';
focus();
listener = addEventListener('blur', clickListener);
function clickListener(){
if(document.activeElement == document.getElementById('someIframe')){
clicked = 'yes';
console.log(clicked);
}
};
每当我运行它时,控制台记录"是"但是" outter"如果我在点击发生后检查变量,则单击仍然没有。
这是我的问题的JSFiddle: https://jsfiddle.net/6c3nbpk5/4/
我需要将divMessage更新为点击。但是,所有这些都在跟踪多个iframe的函数内,因此我无法将变量附加到窗口。
答案 0 :(得分:1)
JavaScript是函数作用域,如果它在当前函数作用域中没有找到定义,它将检查外部作用域等等。
您实际上正在更改内部函数中外部clicked
的值。
然而,这似乎有点棘手 - 请参阅此处以了解时间 - https://jsfiddle.net/6c3nbpk5/1/。
var clicked = 'no';
window.addEventListener('click', clickListener);
function clickListener(){
clicked = 'yes';
window.alert(clicked);
};
window.alert(clicked);
答案 1 :(得分:0)
addEventListener
是必须从事件目标调用的函数。你不应该把它等同于任何东西。
例如,让我们假设你有一个div想要存储一个确定它是否被点击的变量:
var div = document.querySelector('div'); // grabs the first div
var clicked = false;
div.addEventListener('click', function() {
clicked = true;
});
注意:您的代码目前正在做的是在window
上注册事件监听器,因为您没有指定目标,javascript假设您的意思是window
。
因此,页面上的任何模糊事件都会触发您的回调。如果这是预期的行为,请发布您的完整html,并更详细地说明您要实现的目标,我们可以帮助调试该问题。
在我看来,你应该使用点击事件而不是模糊事件,因为它只是在丛林中跳动以获得相同的结果。