Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

254
Views
Stop counter when clicked on the button in vuejs

I am created a simple counter that count from 1 to 10, Its works for me. But now I need to implement if someone want to stop the counter by clicking on the button then it should stop there and the text in the Button should also changed from

<button @click="countToTen()">**Start counting**</button>

to

<button @click="countToTen()">**Stop counting**</button>

This is in Vue js and I am very new to it. Have googled a lots and tried different options but no luck so far with it. Any Help Will be Appreciated !

<script>
    const app = new Vue({
      el: '#app',
      data: {
        welcomeMsg: 'Testing',
        result: 0,
      },

      methods: {
        countToTen() {
          console.log("I have been Clicked " + this.result)
         
          if (this.result < 10)
            setTimeout(() => {
              this.result += 1
              this.countToTen();
            }, 1000)

          if (this.result <= 0) {
            clearTimeout();
            return
          }
        },

      }
    })
  </script>
//displaying it here:
<button @click="countToTen()">Start counting</button>
    <p id="result">TimerStarted: {{result}}</p>

OutPut:

enter image description here

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Try like following snippet: You can create data properties started and timeout for holding setTimeout state. Then You can switch buttons with v-if and v-else

new Vue({
  el: '#app',
  data: {
    welcomeMsg: 'Testing',
    result: 0,
    started: false,
    timeout: null
  },

  methods: {
    countToTen() {
      this.started = true
      if (this.result < 10)
        this.timeout = setTimeout(() => {
          this.result += 1
          this.countToTen();
        }, 1000)
    },
    stopCountToTen() {
      clearTimeout(this.timeout)
      this.started = false
      if(this.result === 10) this.result = 0
    }
  }
})
    
Vue.config.productionTip = false
Vue.config.devtools = false
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
  <button @click="countToTen()" v-if="!started">Start counting</button>
  <button @click="stopCountToTen()" v-else>Stop counting</button>
  <p id="result">TimerStarted: {{result}}</p>
</div>

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!