JavaScript:在调用该事件监听器的函数内删除事件监听器

问题描述 投票:0回答:1

我正在使用香草JS,HTML和CSS制作浏览器计算器。我目前遇到的问题是,我在按下小数点按钮后试图删除事件侦听器(因此,我不会得到像1.3.5.1等这样的废话。)

function buttonpressing(e){
    document.getElementById("display").value += e.target.textContent //updates the display with what you pressed
    //if number pressed
    if(e.target.className === "number"){
        numholder += e.target.textContent;
    }
    //if decimal is pressed, make sure you cant press it again
    if(e.target.id === "decimal"){
        //while operations or clear is not pressed
        document.getElementById("decimal").removeEventListener("click", buttonpressing);
    }
}
buttonchoices.forEach(choice => choice.addEventListener("click", buttonpressing))

我最初在该函数中排除了一些不相关的代码,但是使用此功能时需要“按按钮”。我不明白这个问题。上面的代码将运行并编译,但是十进制事件侦听器不会被“删除”,这将允许我继续按下按钮。我也尝试过在removeEventListener方法内部使用带有false标志的arguments.callee,但无济于事。

javascript event-listener
1个回答
0
投票

如果在您的情况下'console.log'event.target是什么输出?

if(e.target.id === "decimal"){
    console.log(e.target)
    //while operations or clear is not pressed
    document.getElementById("decimal").removeEventListener("click", buttonpressing);
}
© www.soinside.com 2019 - 2024. All rights reserved.