我有一个简单的函数,我希望它只执行一次。因此,我创建了status.example_1
和status.example_2
。当函数被执行时,状态应该从false
变为true
,但它不起作用。它作为参数e2
传递给myFunction
,这就是问题的原因。
有什么办法让它发挥作用吗?我在这里错过了什么?
(function(){
var btn1 = document.getElementById('btn-1'),
btn2 = document.getElementById('btn-2'),
status = {
example_1: false,
example_2: false,
};
function myFunction(e1,e2){
if(e2 === false){
console.log('Button: ' + e1);
e2 = true;
}
}
btn1.addEventListener('click',function(){
myFunction(1,status.example_1);
});
btn2.addEventListener('click',function(){
myFunction(2,status.example_2);
});
})();
<button id="btn-1">Click-1</button>
<button id="btn-2">Click-2</button>
您的函数应该接收整个对象才能修改它,因为您只传递了一个属性,它就像一个新变量,而不是:
function myFunction(e1,e2){
if(e2 === false){
console.log('Button: ' + e1);
e2 = true;
}
}
你可以试试
function myFunction(e1,status){
if(status[`example_${e1}`] === false){
console.log('Button: ' + e1);
status[`example_${e1}`] = true;
}
}
和
myFunction(2,status);