2017-04-24 49 views
0

一个问题,我上周就问这里的这部分后,我的布尔不留真实。有人回答说,除了现在我会多次使用此功能,取而代之的功能多次我想用参数/参数重复,但也有问题....的Javascript:它宣布真正的功能

HTML:

<button id="button1">a</button> 
<button id="button2">b</button> 

的javascript:

var funcAPressed = false; 

var funcA = function(x, y) { 
    alert(x); 
    y = true; 
    alert(y); 
}; 
var funcB = function(x, y) { 
    if (funcAPressed === false){ 
    alert(x); 
    } 
    else{ 
    alert(y); 
    } 
}; 

var buttonA = document.getElementById('button1'); 
buttonA.addEventListener('click', function(){funcA("Button A has been pressed", funcAPressed);}); 

var buttonB = document.getElementById('button2'); 
buttonB.addEventListener('click', function(){funcB("press Button A", "Button B has been pressed");}); 

下面是如何,这是所有设置: 我希望用户按下按钮,以正确的顺序,A则B,如果B先按下,有一个警告消息。我在上一个问题中得到的答案是创建一个布尔值并将其设置为false,这是我在顶部所做的。当我点击按钮时,我会看到下面的警告消息,它看起来像funcAPressed成为真,因为我做了警报(y),警告“真”。

的问题是,当我点击按钮后点击按钮B,它仍然认为funcAPressed =假,而不是它是否真实。

如果不是y = true,funcB会正常工作我有funcAPressed = true ...但通过这样做,我将不得不在该文档中多次复制此函数,而不是只能够使用它一次分配参数。

+0

你认为funcAPressed被引用传递,当你设置y以真,你认为funcAPressed设置为true吗?阅读这样的回答:http://stackoverflow.com/a/13104500/916000 –

回答

0

请理解funcAPressed != yfunA内。你只有经过可变值,而不是可变的。你更换yfuncAPressed varible的价值使用funcAPressed = true

var funcAPressed = false; 
 

 
var funcA = function(x, y) { 
 
console.log(x) 
 
    funcAPressed = true; 
 
    console.log(); 
 
}; 
 
var funcB = function(x, y) { 
 
    if (funcAPressed === false) { 
 
    console.log(x); 
 
    } else { 
 
    console.log(y); 
 
    } 
 
}; 
 

 
var buttonA = document.getElementById('button1'); 
 
buttonA.addEventListener('click', function() { 
 
    funcA("Button A has been pressed", funcAPressed); 
 
}); 
 

 
var buttonB = document.getElementById('button2'); 
 
buttonB.addEventListener('click', function() { 
 
    funcB("press Button A", "Button B has been pressed"); 
 
});
<button id="button1">a</button> 
 
<button id="button2">b</button>

+0

我明白你在说什么,但为什么我不会内FuncA的做funcAPressed =真正的原因是因为我要运行这种功能多次在页面上。如果funcAPressed在只有一个实例中被声明为true,那么在之后的每个实例中都将为true。我需要这种检查不止一次发生。 – 00Saad

0

试试这个。所以直接替换变量的值。

var funcAPressed = false; 
 

 
var funcA = function(x, y) { 
 
    if (funcAPressed === false && y== "btnB"){ 
 
    console.log("please press button a"); 
 
    }else{ 
 
    funcAPressed = true; 
 
    console.log(x); 
 
    } 
 
}; 
 

 
var buttonA = document.getElementById('button1'); 
 
buttonA.addEventListener('click', function(){funcA("Button A has been pressed", "btnA");}); 
 

 
var buttonB = document.getElementById('button2'); 
 
buttonB.addEventListener('click', function(){funcA("Button B has been pressed", "btnB");});
<button id="button1">a</button> 
 
<button id="button2">b</button>