我試圖用vue.js製作一個計時器,但我遇到了一些問題。這是我的mtehods部分:兩個問題:this.myMethod不是一個函數 - addEventListner添加的點擊事件在用戶點擊時運行多於20次
methods: {
saveRunningMethod() {
var runningData = {
duration: `${this.hour} : ${this.minute} : ${this.second}`,
username: this.$store.state.user.username
}
this.$store.dispatch('saveRunning' , runningData)
console.log(runningData);
},
startTimer(){
this.isTimerStart = true;
var timer = window.setInterval(() => {
var e = document.getElementById("stopBtn")
e.addEventListener("click", function(){
clearInterval(timer)
this.isTimerStart = false;
console.log("lets Save it")
this.saveRunningMethod()
});
if(this.mSecond < 9)
this.mSecond +=1
else
this.mSecond=0
if(this.mSecond==9)
this.second +=1
if(this.second>59)
this.second=0
if(this.second==59)
this.minute +=1
if(this.minute>59)
this.minute = 0
if(this.minute==59)
this.hour +=1
},100);
}
}
在這裏,我e.addEventListener("click", function(){
會停止計時器,當我點擊我的停止按鈕,但似乎這個方法運行多時間,因爲你在這張圖片上看到的,我的console.log運行33次!這是爲什麼?
我的其他問題,是關於這一行:this.saveRunningMethod()
我跑我startTimer()
方法中這種方法,但我得到"this.saveRunningMethod() is not a function"
錯誤!
最後,你可以看到我用setInterval
來製作一個計時器,如果你知道一個更好的解決方案,我會非常感激。
UPDATE:我補充我的html部分
<div class="row p-2 m-3 mt-3">
<div class="col-12 p-0 animated fadeInUp mt-3">
<p class="text-center">Your last record was : 00:00:00</p>
</div>
<div class="col-12 p-0 animated fadeInUp mt-3">
<h1 class="text-center timer">
{{this.hour}}:{{this.minute}}:{{second}}:{{mSecond}}
</h1>
</div>
</div>
<div class="row p-2 mt-3" v-bind:class="[this.isTimerStart==false ? 'show' : 'hide']">
<div class="col-12 p-0 animated tada text-center">
<button class="btn-link timerImg" @click="startTimer()">
<img class="img-fluid timerImg" src="../../static/timerStart.png" />
<p>Start</p>
</button>
</div>
</div>
<div class="row p-2 mt-3" v-bind:class="[this.isTimerStart ? 'show' : 'hide']">
<div class="col-12 p-0 animated tada text-center">
<button id="stopBtn" class="btn-link timerImg">
<img class="img-fluid timerImg" src="../../static/timerStop.png" />
<p>Stop</p>
</button>
</div>
</div>
謝謝。
從你的代碼是不明確的,爲什麼是定時器運行的多發時期。編輯問題並添加HTML部分。 – WaldemarIce
@WaldemarIce我的html部分只是一個顯示計時器和兩個按鈕的div,我更新了問題並添加了它。謝謝。 –
請一次提出一個問題。 https://stackoverflow.com/help/how-to-ask – Rob