检查是否在Javascript中单击了按钮

Check if a button is being clicked in Javascript

本文关键字:单击 按钮 Javascript 是否 检查      更新时间:2023-09-26


这是我的问题:我想从javascript中查看当前是否正在单击对象,这是一个例子:

setInterval(function() {
    if (document.getElementByTagName('button')[0].isBeingClicked) { //I know this isn't right: This is where my question is about.
        console.log('Button being clicked');
        return;
    };
    console.log('Button not being clicked');
}, 1000);


当然,使用简化的 HTML:

<html>
    <head></head>
    <body>
        <button>Click me</button>
    </body>
</html>

总而言之:我希望能够看到此时是否正在单击按钮或其他对象。如果它已被单击,则不是,而是正在被单击。

我认为这可能是您正在寻找的。

.HTML

<button onmousedown="mouseDown()" onmouseup="mouseUp()">Click me</button>

爪哇语

<script>
var click = false;
function mouseDown() {
    click = true;
    console.log('Button being clicked');
}
function mouseUp() {
    click = false;
    console.log('Button not being clicked');
}
setInterval(function(){
    if (click === false) {  
        console.log('Button not being clicked');
    } else if (click === true) {
        console.log('Button being clicked');
    }
}, 1000)
</script>

可以在此处找到替代解决方案以及更深入的答案。

正如乔治所说,您正在寻找 mousedown() 事件。它恰好在点击发生时触发,而不是在点击后触发。

http://api.jquery.com/mousedown/

  if (document.getElementsByTagName('button')[0].onmousedown)

您缺少元素后面的 s。它返回一个数组,因此为 [0]。如果这不是页面上的第一个按钮,那么这将不起作用,如果按钮超过 1 个,请使用下面的代码,

var buttons=document.getElementsByTagName('button');
for(var i=0;i > buttons.length; i++){
  buttons[i].addEventlistener("mousedown", MyFunction);
}

这将在按下任何按钮时调用一个名为 MyFunction 的函数