Javascript if语句和vuejs重启计数器的错误
我正在写一段简单的代码,每次你点击一个特定的按钮时,它都会增加一个计数器,当你达到3时,它会重新启动,每个按钮中都会显示数字,似乎工作正常,但我有一个奇怪的错误:如果当你按下任何其他按钮时第一个按钮没有设置为0,它会重新启动第一个按钮回到0。按钮似乎是以某种方式链接的吗 新Vue{ el:应用程序, 数据:{ 一比零,, 二比零,, 3:0 }, 方法:{ 选择一个:函数x,y{ 如果x==1&&this.one<3{ 这个; }否则{ 这个0.1=0 } 如果x==2{ 如果x==2&&this.two<3{ 这个.两个++; }否则{ 这个0.2=0 } } 如果x==3{ 如果x==3&&this.three<3{ 这个,三个++ }否则{ 这个0.3=0 } } } } } {{1}} {{two} {{3}}Javascript if语句和vuejs重启计数器的错误,javascript,if-statement,vue.js,Javascript,If Statement,Vue.js,我正在写一段简单的代码,每次你点击一个特定的按钮时,它都会增加一个计数器,当你达到3时,它会重新启动,每个按钮中都会显示数字,似乎工作正常,但我有一个奇怪的错误:如果当你按下任何其他按钮时第一个按钮没有设置为0,它会重新启动第一个按钮回到0。按钮似乎是以某种方式链接的吗 新Vue{ el:应用程序, 数据:{ 一比零,, 二比零,, 3:0 }, 方法:{ 选择一个:函数x,y{ 如果x==1&&this.one
您的if-else对于所有x都不一致。对于2和3,有嵌套检查,但对于1没有嵌套检查。当x=2时,此条件为假
if ((x == 1) && (this.one < 3))
您可以简化代码,像这样传递属性的名称,以避免多次检查
新Vue{
el:应用程序,
数据:{
一比零,,
二比零,,
3:0
},
方法:{
选择一个:functionprop{
如果这个[道具]<3{
这个[道具]++
}否则{
此[prop]=0
}
}
}
}
{{1}}
{{two}
{{3}}
您的第一个条件语句是错误的。您的条件是如果x==1,否则变量1将重置为0。单击第二个或第三个按钮时,x!==1,这就是为什么按钮的文本重置,而这些按钮之间没有任何链接 新Vue{ el:应用程序, 数据:{ 一比零,, 二比零,, 3:0 }, 方法:{ 选择一个:函数x,y{ 如果x==1{ 如果x==1&&this.one<3{ 这个; }否则{ 这个0.1=0 } } 如果x==2{ 如果x==2&&this.two<3{ 这个.两个++; }否则{ 这个0.2=0 } } 如果x==3{ 如果x==3&&this.three<3{ 这个,三个++ }否则{ 这个0.3=0 } } } } } {{1}} {{two} {{3}} 您应该编写代码: Vue.config.productionTip=false; Vue.config.devtools=false; 新Vue{ el:应用程序, 数据:{ 一比零,, 二比零,, 三比零,, 按钮:[‘一’、‘二’、‘三’] }, 方法:{ 选择一个:functiony{ 此[y]=此[y]<3?此[y]+1:0 }, GetButton按钮{ 返回此[按钮]; } } } {{getButtonbutton}}
问题是你的状况检查。试试这个
chooseOne(x, y) {
if (x == 1) {
this.one <3 ? this.one++ : this.one = 0
}
if (x == 2) {
this.two <3 ? this.two++ : this.two = 0
}
if (x == 3) {
this.three < 3 ? this.three++ : this.three = 0
}
}
为什么在ifx==2后面加上if==2&&this.two<3{?x无法在执行下一行时更改。您最大的问题是您的代码没有更改。如果您使其干燥,则不一致的风险为空。与其仅在视图中重复代码(如果您根本不使用Vue会发生这种情况),不如在视图和模型中重复代码。目标是不在任何地方重复代码。谢谢。我正在再次检查我的代码,肯定还有很大的改进空间。
chooseOne(x, y) {
if (x == 1) {
this.one <3 ? this.one++ : this.one = 0
}
if (x == 2) {
this.two <3 ? this.two++ : this.two = 0
}
if (x == 3) {
this.three < 3 ? this.three++ : this.three = 0
}
}