あけましておめでとうございます。
data: function() { return { today_schedule: [ { id:'1', name: 'チームミーティング', start: '9:00', end: '10:00',}, { id:'2', name: '定例会議', start: '10:30', end: '11:30', }, }
このtoday_schedule配列のend時間の10分前になったら音声で通知をしたいと思っています。関数はこのようにしました。
minutesAgo: function(){ var hournow = now.getHours(); var minutesnow = now.getMinutes(); //時間を取り出して数値にする var hourend = this.today_schedule[i].end.substr(0,2); var hourend = Number( hourend ); //分を取り出して数値にする var minutesend = this.today_schedule[i].end.substr(3,2); var minutesend = Number( minutesend ); //10分前にする var tenminago = minutesend-10; if(hournow == hourend && minutesnow == tenminago){ var speak = new SpeechSynthesisUtterance(); speak.text = '10分前になりました。'; speak.lang = 'ja-jp'; speechSynthesis.speak(speak); } },
この関数をどこで呼び出せばいいのかわかりません。
そもそもこの関数の書き方はあってますでしょうか?
よろしくお願いします。
---追記---
setTimeoutを使用してボタンを追加し文を変更いたしました。
よろしければこちらの方もよろしくお願いします。
clickButton: function(event) {; this.i = this.i+1 //ボタンを押された時間から終了予定時刻までの差を計算 var now = new Date(); var hournow = now.getHours(); var minutesnow = now.getMinutes(); //時間を取り出して数値にする var hourend = this.today_schedule[i].end.substr(0,2); hourend = Number( hourend ); //分を取り出して数値にする var minutesend = this.today_schedule[i].end.substr(3,2); minutesend = Number( minutesend ); //計算する var hour = ( hourend - hournow ); hour = ( hour * 60 * 60 );//秒 var minutes = ( minutesend - minutesnow ); if( minutes < 0 ){ minutes = ( 60 + (minutes) ) ; minutes = ( minutes * 60 ); var second = ( hour + (minutes) ); var msecond = ( second * 1000 ); var mago = ( msecond - 600000 ); }else{ minutes = ( minutes * 60 );//秒 second = ( hour + ( minutes )); msecond = ( second * 1000 );//終了まで(ミリ秒) mago = ( msecond - 600000 );//10分前 } //10分前通知 var speak = new SpeechSynthesisUtterance(); speak.text = '終了10分前です。'; speak.lang = 'ja-jp'; speak = speechSynthesis.speak(speak); setTimeout(speak, mago); /*var time = setTimeout(speechSynthesis.speak(speak), mago); clearTimeout(time);*/ //終了通知 var endspeak = new SpeechSynthesisUtterance(); endspeak.text = '終了時刻となりました。'; endspeak.lang = 'ja-jp'; speak = speechSynthesis.speak(speak); setTimeout(speak, msecond); /*time = setTimeout(speechSynthesis.speak(endspeak), msecond); clearTimeout(time);*/ },
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/06 07:56
2020/01/07 04:21