繁体   English   中英

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

[英]Variable in handler not being reassigned

我的页面上有一个布尔变量和两个按钮。 布尔变量在页面加载时分配给ture,当我单击Button A和Button B时,它应该在true和false之间切换;单击Button A时,它会发出警报;单击Button 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>

您在每次调用时都声明新变量。 您需要更改现有值的值。

$(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');
        }
        }
    });

和顺便说一句if( smth == true)可以用if(smth)替换

您每次都在重新初始化变量。 第一次设置“值”时只需使用“ 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');
}
}

您需要将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');
        }
        }
    });

这是一个范围问题。 您正在定义“价值”。 (即对其进行更改)。

删除var关键字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM