之前可能已经介绍过,但我在网上看到的内容令人困惑,或者对于像我这样的初学者来说至少太先进了。这是一个例子....
var funcA = function() {
alert("Button A has been pressed");
};
var funcB = function() {
if (funcA === false){
alert("press Button A");
}
else{
alert("Button B has been pressed");
}
};
var buttonA = document.getElementById('button1');
buttonA.onclick = funcA;
var buttonB = document.getElementById('button2');
buttonB.onclick = funcB;
如果我按任意顺序点击按钮A或按钮B,它们会起作用;但除非先点击按钮A,否则我不希望按钮B工作。使用我现在的代码,funcB中的if语句永远不会运行,但else语句总是运行。
答案 0 :(得分:1)
我可能会创建一个变量,它可以有效地用作运行函数A时所点击的开关:
var funcAPressed = false;
var funcA = function() {
alert("Button A has been pressed");
funcAPressed = true;
};
var funcB = function() {
if (funcAPressed === false){
alert("press Button A");
}
else{
alert("Button B has been pressed");
}
};
var buttonA = document.getElementById('button1');
buttonA.onclick = funcA;
var buttonB = document.getElementById('button2');
buttonB.onclick = funcB;

答案 1 :(得分:0)
以下if
语句中的代码块永远不会运行,因为funcA
不是布尔值,它是一个没有返回值的函数。
if (funcA === false){
alert("press Button A");
}
然而,您可以做的只是声明一个用作标志的布尔值,如下所示:
(function() {
let called = false;
var funcA = function() {
called = true;
alert("Button A has been pressed");
};
var funcB = function() {
if (!called) {
alert("press Button A");
} else {
alert("Button B has been pressed");
}
};
var buttonA = document.getElementById('button1');
buttonA.onclick = funcA;
var buttonB = document.getElementById('button2');
buttonB.onclick = funcB;
})();

<button id="button1">button 1</button>
<button id="button2">button 2</button>
&#13;
答案 2 :(得分:0)
只需在按钮A的点击处理程序中更改按钮B的行为:
document.getElementById('a').onclick = () => {
alert("Button A has been pressed");
document.getElementById('b').onclick = () => {alert("Button B has been pressed") };
}
document.getElementById('b').onclick = () => { alert("press Button A") };
<button id="a">a</button>
<button id="b">b</button>
答案 3 :(得分:0)
这可能很脏但可以工作`
var count = 0;
function funcA(){
count = 1;
}
function funcB(){
if(count == 1){
alert("OKAy!")
}else{
alert("Press Button A");
}
}
<button id="a" onclick="funcA();">A</button>
<button id= "b" onclick="funcB();">B</button>
`
答案 4 :(得分:0)
我认为你已经得到了答案,但只是在你这样做时添加:
var funcA = function() {
alert("Button A has been pressed");
}
稍后检查:
if (funcA === false){
alert("press Button A");
}
然后funcA不会是假的。原因是你已经为funcA变量分配了一个函数对象,因此它是真实的。它并不代表button1先前已被按下的事实。 Javascript与其他经典语言不同,因此可以将javascript函数分配给变量。希望它能帮助您更好地学习语言!