鱼C论坛

 找回密码
 立即注册
查看: 270|回复: 1

[已解决]【WEB】怎么在js中使鼠标不能连续点击

[复制链接]
发表于 2024-1-17 10:48:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
以下是js部分代码,我想要的是在onmouseup执行完之前让鼠标不能再次按下,或者说是不能再次执行按下事件。
  1. function sleep(time) {
  2.             return new Promise((resolve) => setTimeout(resolve, time));
  3.         }

  4.         var ganzi = document.getElementById("ganzi")
  5.         var longth = 0;
  6.         var longthban = 0;
  7.         var interval;
  8.         window.onmousedown = function (event) {
  9.             interval = setInterval(function () {
  10.                 longth++;
  11.                 longthban = Math.floor(longth / 2);
  12.                 ganzi.style.transform = `translateY(-${longth}px)` //让杆子向上增长
  13.                 setGanZiLongth(longth);
  14.             }, 10);
  15.         }
  16.         window.onmouseup = async function () {
  17.             clearInterval(interval); // 清除定时器
  18.             ganzi.style.transform = `translateY(-${longthban}px)translateX(${longthban}px)rotate(90deg)`
  19.             await sleep(1500);
  20.             isSuccess();
  21.         };
复制代码
最佳答案
2024-1-17 10:48:59
你可以在鼠标按下事件触发后,将鼠标点击事件禁用一段时间。这样可以防止用户连续点击。

首先,在你的代码中添加一个变量`isClickEnabled`来控制鼠标点击的启用和禁用状态:

  1. var isClickEnabled = true;
复制代码


然后,在鼠标按下事件处理程序中,你可以使用这个变量来判断是否允许继续进行点击操作:

  1. window.onmousedown = function (event) {
  2.   if (isClickEnabled) {
  3.     // 点击操作的代码
  4.    
  5.     isClickEnabled = false; // 禁用点击操作
  6.   }
  7. };
复制代码


接着,在适当的地方(比如`onmouseup`事件处理程序)将`isClickEnabled`重新设置为`true`以重新启用点击操作:

  1. window.onmouseup = async function () {
  2.   // 松开操作的代码
  3.   
  4.   isClickEnabled = true; // 启用点击操作
  5. };
复制代码


这样就可以实现在`onmouseup`执行完之前禁用鼠标连续点击。

完整的代码示例:

  1. function sleep(time) {
  2.   return new Promise((resolve) => setTimeout(resolve, time));
  3. }

  4. var ganzi = document.getElementById("ganzi");
  5. var longth = 0;
  6. var longthban = 0;
  7. var interval;
  8. var isClickEnabled = true; // 添加点击启用和禁用变量

  9. window.onmousedown = function (event) {
  10.   if (isClickEnabled) {
  11.     interval = setInterval(function () {
  12.       longth++;
  13.       longthban = Math.floor(longth / 2);
  14.       ganzi.style.transform = `translateY(-${longth}px)`; //让杆子向上增长
  15.       setGanZiLongth(longth);
  16.     }, 10);

  17.     isClickEnabled = false; // 禁用点击操作
  18.   }
  19. };

  20. window.onmouseup = async function () {
  21.   clearInterval(interval); // 清除定时器
  22.   ganzi.style.transform = `translateY(-${longthban}px)translateX(${longthban}px)rotate(90deg)`;
  23.   await sleep(1500);
  24.   isSuccess();

  25.   isClickEnabled = true; // 启用点击操作
  26. };
复制代码


希望可以帮到你!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-1-17 10:48:59 | 显示全部楼层    本楼为最佳答案   
你可以在鼠标按下事件触发后,将鼠标点击事件禁用一段时间。这样可以防止用户连续点击。

首先,在你的代码中添加一个变量`isClickEnabled`来控制鼠标点击的启用和禁用状态:

  1. var isClickEnabled = true;
复制代码


然后,在鼠标按下事件处理程序中,你可以使用这个变量来判断是否允许继续进行点击操作:

  1. window.onmousedown = function (event) {
  2.   if (isClickEnabled) {
  3.     // 点击操作的代码
  4.    
  5.     isClickEnabled = false; // 禁用点击操作
  6.   }
  7. };
复制代码


接着,在适当的地方(比如`onmouseup`事件处理程序)将`isClickEnabled`重新设置为`true`以重新启用点击操作:

  1. window.onmouseup = async function () {
  2.   // 松开操作的代码
  3.   
  4.   isClickEnabled = true; // 启用点击操作
  5. };
复制代码


这样就可以实现在`onmouseup`执行完之前禁用鼠标连续点击。

完整的代码示例:

  1. function sleep(time) {
  2.   return new Promise((resolve) => setTimeout(resolve, time));
  3. }

  4. var ganzi = document.getElementById("ganzi");
  5. var longth = 0;
  6. var longthban = 0;
  7. var interval;
  8. var isClickEnabled = true; // 添加点击启用和禁用变量

  9. window.onmousedown = function (event) {
  10.   if (isClickEnabled) {
  11.     interval = setInterval(function () {
  12.       longth++;
  13.       longthban = Math.floor(longth / 2);
  14.       ganzi.style.transform = `translateY(-${longth}px)`; //让杆子向上增长
  15.       setGanZiLongth(longth);
  16.     }, 10);

  17.     isClickEnabled = false; // 禁用点击操作
  18.   }
  19. };

  20. window.onmouseup = async function () {
  21.   clearInterval(interval); // 清除定时器
  22.   ganzi.style.transform = `translateY(-${longthban}px)translateX(${longthban}px)rotate(90deg)`;
  23.   await sleep(1500);
  24.   isSuccess();

  25.   isClickEnabled = true; // 启用点击操作
  26. };
复制代码


希望可以帮到你!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-24 23:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表