处理程序中的变量未被重新分配

时间:2014-08-10 18:26:20

标签: javascript jquery html

我的页面上有一个布尔变量和两个按钮。布尔变量在页面加载时分配给ture,当我单击按钮A和按钮B时它应该在true和false之间切换,当单击按钮A时警告ture,当单击按钮B时警告false。我的代码存在的问题是无论点击哪个按钮都会发出警告。我可以将警报放在onclick函数中,但我不想这样做。我想使用布尔变量。

这是代码。

<div><button type="button" id="btnA">Button A</button></div>
<div><button type="button" id="btnB">Button B</button></div>    
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>    
<script>    
    $(document).ready(function(){
        var value = true;
        $('#btnA').click(function(){
        var value = true;
        myFunction();
        });
        $('#btnB').click(function(){
        var value = false;
        myFunction();
        });
        function myFunction(){
        if (value == true){
            alert('true');
        }else{
            alert('false');
        }
        }
    });
</script>

4 个答案:

答案 0 :(得分:1)

您正在为每次通话声明新变量。您需要的是更改现有值。

$(document).ready(function(){
        var value = true;
        $('#btnA').click(function(){
        value = true; //no var keyword
        myFunction();
        });
        $('#btnB').click(function(){
        value = false; //no var keyword
        myFunction();
        });
        function myFunction(){
        if (value == true){
            alert('true');
        }else{
            alert('false');
        }
        }
    });

btw if( smth == true)可以在您的情况下替换为if(smth)

答案 1 :(得分:1)

每次都要重新初始化变量。只需在第一次设置'值'时使用'var',而不是在其他时间使用'var'。

var value = true;
$('#btnA').click(function(){
  value = true;
myFunction();
});
$('#btnB').click(function(){
 value = false;
myFunction();
});
function myFunction(){
if (value == true){
    alert('true');
}else{
    alert('false');
}
}

答案 2 :(得分:0)

您需要将value传递给函数

$(document).ready(function(){
        var value = true;
        $('#btnA').click(function(){
        var value = true;
        myFunction(value);
        });
        $('#btnB').click(function(){
        var value = false;
        myFunction(value);
        });
        function myFunction(value){
        if (value == true){
            alert('true');
        }else{
            alert('false');
        }
        }
    });

答案 3 :(得分:0)

这是一个范围问题。你在定义'价值'。 (即改变它)你的功能。

删除var关键字。