检查按钮是不是被点击

Posted

技术标签:

【中文标题】检查按钮是不是被点击【英文标题】:Checking if button clicked检查按钮是否被点击 【发布时间】:2021-03-08 11:21:09 【问题描述】:

是否可以检查按钮事件是否(条件)onclick?因为如果用户点击弹出按钮,我想返回一个值

function showPopup()
    popup.style.visibility = "visible";
    popupButton.onclick = ()=>
        popup.style.visibility = "hidden";
    
    popupClose.onclick = () => 
        popup.style.visibility = "hidden";
      

【问题讨论】:

什么时候返回值?来自 showPopup 方法?如果是这样,那么没有。因为该方法使事件处理程序稍后发生。单击“稍后”时,该方法已经结束。 你的问题不清楚。你能解释一下你在找什么吗? @Taplar 我明白了!谢谢你有什么想法吗? @PraneetDixit 我只想在点击 popupButton 时返回一个真实值 从什么方法返回真值? 【参考方案1】:

我建议你这样做

window.addEventListener("load", () => 
  document.getElementById("popBut").addEventListener("click", e => 
    console.log("Open button clicked"); // here you can call something 
    document.getElementById("popup").classList.remove("hide");
  )
  document.querySelector("#popup div.close").addEventListener("click", e => 
    console.log("Close button clicked"); // here you can call something 
    document.getElementById("popup").classList.add("hide");
  )

)
.hide 
  display: none;


#popup 
  height: 100px;
  width: 100px;
  background-color: yellow;
  border: 1px solid black;


.close 
  display: inline-block;
  float: right
<button type="button" id="popBut">Show</button>

<div id="popup" class="hide"><div class="close">X</div>Here is a popup </div>

【讨论】:

可能是因为你没有真正回答问题...... @epascarello 也许现在?【参考方案2】:

您正试图从异步调用中读取返回值。当返回触发时,其他代码已经完成运行。您需要使用 promise 并让其他代码在执行之前等待响应。

function askQuestion() 
  return new Promise(function(resolve, reject) 

    const msg = document.getElementById("msg");
    const btnYes = document.getElementById("btnYes");
    const btnNo = document.getElementById("btnNo");

    const cleanUp = function() 
      msg.classList.remove("active");
      btnYes.removeEventListener("click", yesFnc);
      btnNo.removeEventListener("click", noFnc);
    

    const yesFnc = function() 
      resolve(true);
      cleanUp();
    
    const noFnc = function() 
      resolve(false);
      cleanUp();
    

    btnYes.addEventListener("click", yesFnc);
    btnNo.addEventListener("click", noFnc);
    msg.classList.add("active");


  );


function example1 () 
  askQuestion().then(function(result)
    console.log("The answer was: ", result);
  );



async function example2 () 
  const result = await askQuestion()
  console.log("The answer was: ", result);


document.getElementById("test1").addEventListener("click", example1);
document.getElementById("test2").addEventListener("click", example2);
#msg 
  display: none;
  position: absolute;
  top: 0; left: 0;
  background-color: #CCC;
  border: 1px solid black;
  width: 300px;
  padding: 1em;


#msg.active 
  display: block;
<button id="test1">Example 1</button>
<button id="test2">Example 2</button>

<div id="msg">
  <h2>Do you like pie?</h2>
  <button id="btnYes" type="button">Yes</button>
  <button id="btnNo" type="button">No</button>
</div>

【讨论】:

以上是关于检查按钮是不是被点击的主要内容,如果未能解决你的问题,请参考以下文章

检查用户是不是点击了 Facebook Like 按钮(多个按钮)

检查按钮是不是已滑过,并检查其标签? (iOS)[重复]

如何使用 selenium webdriver 检查按钮是不是可点击

使用 Selenium 和 Python,如何检查按钮是不是仍然可点击?

如何检查单选按钮是不是被选中

如何检查“单选按钮”是不是被选中?