我有一个简单的函数,我希望它只执行一次。因此,我创建了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>
发布于 2020-09-08 00:43:10
你的函数应该接收整个对象才能修改它,因为你只传递了一个属性,它就像一个新的变量,而不是:
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);
https://stackoverflow.com/questions/63781179
复制相似问题