Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript if语句和vuejs重启计数器的错误_Javascript_If Statement_Vue.js - Fatal编程技术网

Javascript if语句和vuejs重启计数器的错误

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

我正在写一段简单的代码,每次你点击一个特定的按钮时,它都会增加一个计数器,当你达到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}}
您的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
      }
    }