【发布时间】:2020-06-11 12:10:00
【问题描述】:
我想做的事情看起来很简单,但我想不通。
这是基本场景:
函数 A 正在运行
功能 B 在单击按钮时启动
我需要在功能 B 运行时禁用功能 A
然后当功能B完成后,重新启用功能A(回到我们开始的地方)。
我已经设置了一个非常基本的 Pen 来帮助说明我想要实现的目标。你可以忽略函数添加类的事实,这只是让它做一些事情。
https://codepen.io/andystent/pen/yLNbyjZ?editors=1111
因此,在示例中,所需的场景是:
方块是绿色的
点击按钮时块变为红色
变红后,方块变回绿色
同样,忽略颜色变化和添加/删除类 - 这只是为了让某些事情发生。
来自 Pen 示例的 JS:
var block = document.getElementById("block");
var button = document.getElementById("button");
//Function A: the main function that is active by default - I need this function disabled/stopped when the button is clicked, and then re enabled when Function B is complete.
$(document).ready(function(){
block.classList.add("green"); //adding class is only for example
});
//Function B
$(button).click(function(){
block.classList.add("red"); //adding class is only for example
});
更新 1
这是我根据 Jasper 和 Adder 的回答所做的工作。
使用单独的函数效果很好,但是当我单击按钮时,console.log 可以工作,但我仍然可以执行 if 语句中发生的事情,就像 active = true 一样。
在此示例中,当我单击按钮时,它应该将 active 更改为“false”,因此不允许 if 语句的内容起作用。我希望这是有道理的....
var aActive = true;
// FUNCTION A - Active is True
function fA(){
aActive = true;
console.log("active = true");
};
//FUNCTION B - Active is False
function fB(){
aActive = false;
console.log("active = false");
}
//When clicking Nav link run Function B (active false)
var navLinks2 = document.querySelectorAll("#nav-wrap nav a")
navLinks2.forEach(function (navLink2) {
navLink2.addEventListener('click', function () {
fB();
//fA();
});
});
//Only do this if Active is TRUE
if(aActive) {
//do something
} //end if active
【问题讨论】:
-
我用代码 sn-p 更新了我的答案。
标签: javascript function conditional-statements