Javascript 使用if语句实现相同功能的多个按钮

Javascript 使用if语句实现相同功能的多个按钮,javascript,jquery,button,switch-statement,case,Javascript,Jquery,Button,Switch Statement,Case,我试着制作我自己的case函数,但一旦我在第一次单击时隐藏了它们,我就无法让它“显示内容”。所以我的问题是我做错了什么,我怎么才能解决它,我应该怎么做呢 我唯一的要求是,多个按钮可以使用相同的代码来显示/隐藏相同的对象–因此像oddClick这样的操作将不起作用,因为这将需要不必要的单击才能再次获得偶数/奇数(我想?) 第5行:var状态=1;使其始终进入“其他” Fiddle:这一行5:var state=1;使其始终进入“else” Fiddle:在单击函数外声明状态变量 var state

我试着制作我自己的case函数,但一旦我在第一次单击时隐藏了它们,我就无法让它“显示内容”。所以我的问题是我做错了什么,我怎么才能解决它,我应该怎么做呢

我唯一的要求是,多个按钮可以使用相同的代码来显示/隐藏相同的对象–因此像
oddClick
这样的操作将不起作用,因为这将需要不必要的单击才能再次获得偶数/奇数(我想?)


第5行:var状态=1;使其始终进入“其他”


Fiddle:

这一行5:var state=1;使其始终进入“else”


Fiddle:

在单击函数外声明状态变量

var state = 1; // Do not write inside click function scope

在单击函数外部声明变量

var state = 1; // Do not write inside click function scope

要检测对象的状态,应使用对象属性(而不是并行
state
变量)


例如,使用
boxwidth
的值。

要检测对象的状态,应该使用对象属性(而不是并行
状态
变量)

例如,使用
boxwidth
的值。

以更简单的方式:
$('.boxbtn')。在('click',函数(){
var-boxwidth=$('.box').width();//不确定为什么要这样做
原木(箱宽);
console.log('-'+boxwidth+'px');
var btnVal=$(this).text();//获取按钮文本
if(btnVal==“Show Stuff”)//如果是Show Stuff
{
$(this.text('Hide Stuff');//更改其文本
警报(“显示内容”);
/*在此处显示内容*///执行功能
}
否则{
$(this.text('Show Stuff');//更改为正常
警惕(“隐藏的东西”);
/*在此处隐藏内容*///隐藏功能
}
});

以更简单的方式显示内容
$('.boxbtn')。在('click',函数(){
var-boxwidth=$('.box').width();//不确定为什么要这样做
原木(箱宽);
console.log('-'+boxwidth+'px');
var btnVal=$(this).text();//获取按钮文本
if(btnVal==“Show Stuff”)//如果是Show Stuff
{
$(this.text('Hide Stuff');//更改其文本
警报(“显示内容”);
/*在此处显示内容*///执行功能
}
否则{
$(this.text('Show Stuff');//更改为正常
警惕(“隐藏的东西”);
/*在此处隐藏内容*///隐藏功能
}
});



显示内容
在一个按钮上使用toggle或toggleClass无需多个按钮查看问题的关键字可能会有所帮助。答案很多。第5行:
var state=1使它总是进入“else”@Pierre在这个特定的例子中,我确实想让多个按钮做同一件事,这就是全部的想法–无论使用顺序如何,两个按钮都必须执行相同的功能。@Lenny,现在试试我的答案。在一个按钮上使用toggle或toggleClass无需多个按钮。查看问题的关键字可能会有所帮助。答案很多。第5行:
var state=1使其始终进入“else”@Pierre在这种特定情况下,我确实希望有多个按钮执行相同的操作,这就是全部想法–无论使用顺序如何,两个按钮都必须执行相同的功能。@Lenny,现在试试我的答案。谢谢你的答案,但这也行不通。再试一次,oliver也发现了一个小问题,但仍然只为meIndeed运行else,您的更新解决方案可以完美地工作。干杯,伙计,你帮我省去了很多头痛!谢谢你的回答,但这也不行?再试一次,oliver发现了一个小问题,但仍然只为meIndeed运行了else,我发现了,你的更新解决方案工作得非常完美。干杯,伙计,你帮我省去了很多头痛!如果(state==0)@saar更改此行,请在发布前检查您的答案。正如我所注意到的,古鲁帕萨德·拉奥的答案是最适合这个问题的答案。不建议使用全局变量。但作为一个快速解决方案,这没关系,只是时间问题。你有15分钟的时间来改变你的答案。最后,这不是关于得分的问题。这是关于解决一些人头痛的问题。如果(state==0)更改了此行@saar,请在发布前检查您的答案。正如我所注意到的,古鲁帕萨德·拉奥的答案是最适合这个问题的答案。不建议使用全局变量。但作为一个快速解决方案,这没关系,只是时间问题。你有15分钟的时间来改变你的答案。最后,这不是关于得分的问题。这是关于解决一些人头痛的问题。
var state = 1; // Do not write inside click function scope
var state = 0; //placed on global scope

$('.boxbtn').on('click', function () {
    var boxwidth = $('.box').width();
    console.log(boxwidth);
    console.log('-'+boxwidth+'px');

    if(state == 0) {
        state=1;
        console.log(state);
    }
    else {
        state = 0;
        console.log(state);
    }

});