如何将变量保留在事件侦听器中以避免被覆盖? 以下是一个例子。它会提醒两次'秒,而不是第一次'那么'第二'
var firstVar = 'first';
window.addEventListener('load',function(){
alert(firstVar);
});
var firstVar = 'second';
window.addEventListener('load',function(){
alert(firstVar);
});
我也试过,如下所示。
var firstVar = 'first';
window.addEventListener('load',function(){
var temp = firstVar;
alert(temp);
});
var firstVar = 'second';
window.addEventListener('load',function(){
var temp = firstVar;
alert(temp);
});
我的事件试图使用bind(this),但它们都没有工作。 有没有办法让它发挥作用,或者它无法发挥作用?
由于
答案 0 :(得分:1)
因为你已经声明了两次相同的变量,所以只有最后一次页面加载才可用。就像你已经为它分配了新的值,所以你不能在警告中看到first
。
你必须做这样的事情:
var firstVar1 = 'first';
window.addEventListener('load',function(){
alert(firstVar1);
});
var firstVar = 'second';
window.addEventListener('load',function(){
alert(firstVar);
});
或更好地在单个加载事件中添加两个语句。像这样:
window.addEventListener('load',function(){
var firstVar = 'first';
alert(firstVar);
var firstVar = 'second';
alert(firstVar);
});
或者你可以这样做:
var firstVar = 'first';
window.addEventListener('load',function(){
alert(firstVar);
mymethod();
});
function mymethod(){
var firstVar = 'second';
alert(firstVar);
}
或类似于您的实施:
var firstVar = 'first';
localStorage.setItem("data1",firstVar);
window.addEventListener('load',function(){
var first = localStorage.getItem("data1");
alert(first);
});
var firstVar = 'second';
localStorage.setItem("data2",firstVar);
window.addEventListener('load',function(){
var first = localStorage.getItem("data2");
alert(first);
});
答案 1 :(得分:0)
您正在使用事件侦听器来请求firstVar
。
该文档只能加载一次,因此您可以获得相同的结果。
您就是这样做的
window.addEventListener('load',function(){
var firstVar = 'First';
alert(firstVar);
var firstVar = 'Second';
alert(firstVar);
});