javascript - 为什么我的 JavaScript 函数在我告诉它在另一个函数运行时停止时继续运行?
问题描述
不知道为什么这个函数继续运行。函数 a() 应始终运行,除非函数 b() 正在运行。当单击具有类“btn”的按钮时,将启动函数 b()。我不知道为什么这不起作用。谢谢!
var bActive = false;
if(bActive == false){
a();
}
function a(){
const toggleGreat = document.querySelector('.great')
const rawr = document.querySelector('.rawr')
toggleGreat.addEventListener('mouseover', function(){
rawr.classList.remove('active');
})
}
function b(){
bActive = true;
const rawr = document.querySelector('.rawr');
const paper = document.querySelector('.paper');
rawr.classList.add('active');
paper.classList.remove('active')
}
btn.addEventListener('click',function(){
b();
}
解决方案
函数不会按照您描述的方式“继续运行”。这两个函数都将事件处理程序绑定到 DOM 并立即退出。您无法更改a
aftera
已运行的功能。
一种可能的解决方案是在事件处理程序内部测试是否bActive
为真:
var bActive = false;
const toggleGreat = document.querySelector('.great')
const rawr = document.querySelector('.rawr')
const paper = document.querySelector('.paper');
toggleGreat.addEventListener('mouseover', function(){
if (!bActive) {
rawr.classList.remove('active');
}
})
btn.addEventListener('click',function(){
bActive = true;
rawr.classList.add('active');
paper.classList.remove('active')
}
推荐阅读
- r - 如何在添加矩阵值的同时合并df中的行
- javascript - JS Accordion - 用 forEach 替换传统的 for 循环
- reactjs - 尝试从 netlify 应用程序调用托管在 heroku 上的 API 时出错
- fullcalendar - fullcalendar 插件不适用于语言环境
- excel - 如何使用 Excel VBA 根据变量的输入选择某些范围
- android - 如何在 Kivy App (android) 中实现应用内购买
- hash - CRC32 能否像 Rabin–Karp 字符串搜索算法一样用作“滚动哈希”?
- javascript - JS,如何在从<开始并以>结束的条件下删除文本?
- git-tfs - git-tfs 克隆没有获取所有文件
- flutter - 如何通过将 Map 解析为构造函数来创建对象?