vue.jsでタイマーを作成しようとしましたが、いくつか問題があります。これは私のmtehodsセクションです:2つの問題:this.myMethodはaddEventListnerによって追加されたfunction-clickイベントではなく、ユーザーがクリックすると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回走る!何故ですか?私は私のstartTimer()
メソッド内でこのメソッドを実行しthis.saveRunningMethod()
が、私は"this.saveRunningMethod() is not a function"
エラーを取得する:
私の他の質問は、このラインについてです!
最後に、setInterval
を使用してタイマーを作成しましたが、より良い解決策がわかっていれば、本当に感謝します。
UPDATE:私はありがとう
<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部分を追加します。
は、明確ではありません。質問を編集し、HTML部分も追加してください。 – WaldemarIce
@WaldemarIce私のHTML部分は、タイマーと2つのボタンを表示する1つのdivです。私は質問を更新し、とにかくそれを追加します。ありがとう。 –
一度に1つ質問してください。 https://stackoverflow.com/help/how-to-ask – Rob