eventListener 适用于应该在函数的私有范围内的变量
eventListener works on variable which is supposed to be inside a function's private scope
这里我有这个输入按钮 element.A 声明为 btn
的变量使用 document.getElementById('btn')
分配了对该按钮的引用,但 btn
变量在函数内部命名为 create
。据我所知,函数会创建无法全局访问的 private scope,但在这里我可以设法将 eventListener
添加到该变量,而无需调用该函数。这怎么可能?
function create(){
var btn=document.getElementById('btn');
}
btn.addEventListener('click',function(e){
alert('it worked !!');
});
<input type='button' value='button' id='btn'>
如果您有一个设置了 id 的元素,该 id 将用作 window
-object 上的键,这意味着它在浏览器中全局可用。有关详细信息,请参阅 https://html.spec.whatwg.org/#named-access-on-the-window-object。
在你的情况下,如果你不命名你的内部变量 btn,那么你将无法访问它。
function create(){
var innerBtn=document.getElementById('btn');
}
innerBtn.addEventListener('click',function(e){
alert('not going to happen !!');
});
<input type='button' value='button' id='btn'>
反之亦然,即使您没有在内部函数中分配 btn,您仍然可以添加监听器。
btn.addEventListener('click',function(e){
alert('it worked !!');
});
<input type='button' value='button' id='btn'>
这里我有这个输入按钮 element.A 声明为 btn
的变量使用 document.getElementById('btn')
分配了对该按钮的引用,但 btn
变量在函数内部命名为 create
。据我所知,函数会创建无法全局访问的 private scope,但在这里我可以设法将 eventListener
添加到该变量,而无需调用该函数。这怎么可能?
function create(){
var btn=document.getElementById('btn');
}
btn.addEventListener('click',function(e){
alert('it worked !!');
});
<input type='button' value='button' id='btn'>
如果您有一个设置了 id 的元素,该 id 将用作 window
-object 上的键,这意味着它在浏览器中全局可用。有关详细信息,请参阅 https://html.spec.whatwg.org/#named-access-on-the-window-object。
在你的情况下,如果你不命名你的内部变量 btn,那么你将无法访问它。
function create(){
var innerBtn=document.getElementById('btn');
}
innerBtn.addEventListener('click',function(e){
alert('not going to happen !!');
});
<input type='button' value='button' id='btn'>
反之亦然,即使您没有在内部函数中分配 btn,您仍然可以添加监听器。
btn.addEventListener('click',function(e){
alert('it worked !!');
});
<input type='button' value='button' id='btn'>