正しく動作しない
下記コードの if(i >= 2){...} の部分のclearIntervalだけ動作しません。(consoleは動作します)
if(settime < 0){...} のclearIntervalは動作します。
ちなみにiはボタンが押された回数です。
教えて下さいよろしくおねがいします...。
JavaScript
1'use strict'; 2var settime = 900; 3var min; 4var sec; 5var i = 0; 6 7 window.onload = function(){ 8 i = 0; 9 min = 0; 10 sec = 0; 11 chrome.browserAction.setBadgeText({"text": String()}) 12 console.log("window.onloadが読み込まれました"); 13 } 14 15var inter = setInterval(function(){ 16 chrome.tabs.query( {'url': "*"}, function(tabs){ 17 chrome.tabs.sendMessage(tabs[0].id, {message: "back -> content"}, function(item){ 18 19 if(item === true){ 20 console.log(item); 21 timeF(); 22 i += 1; 23 } 24 }) 25 }) 26}, 1000) 27 28 var timeF = function(){ 29 var timeinter = setInterval(function(){ 30 31 min = Math.floor(settime % (24 * 60 * 60) % (60 * 60) / 60); 32 sec = settime % (24 * 60 * 60) % (60 * 60) % 60; 33 settime -= 1; 34 console.log(min + ":" + sec); 35 chrome.browserAction.setBadgeText({"text": String(settime)}); 36 37 if(i >= 2){ 38 console.log(i + "回目"); 39 clearInterval(timeinter); 40 i = 1; 41 settime = 10; 42 } 43 44 if(settime < 0){ 45 console.log("計測終了"); 46 clearInterval(timeinter); 47 settime = 900; 48 i = 0; 49 chrome.browserAction.setBadgeText({"text": String()}) 50 } 51 52 console.log(i); 53 },1000); 54 } 55 56 chrome.runtime.onMessage.addListener(function(request, sender, sendResponse){ 57 if(request.message === "i want min"){ 58 sendResponse(min); 59 } 60 61 if(request.message === "i want sec"){ 62 sendResponse(sec); 63 } 64 });
期待する動きはどのようなもので、実際どうなっているのでしょうか。
(動作していないのか、動作していないように見えているだけなのか判断する情報が欲しいです)
コンソールのログ出力と、
どこで、現在どうなっていて、
本来どうなってほしいのか、
を整理、記載してはいかがでしょうか?
恐らく、clearIntervalにて、
自身の関数のIntervalをリセットしたいのだろうと
推測はしますが。。。
あと、関数は全文乗せた方が良いです。
現在は部分抜粋ですが、各変数が他の関数にてどのように扱われているか分からないため、
根本要因の発見が出来ない可能性があります。
ごめんなさい!
いらない部分まで載せてしまうと申し訳ないと思いまして...
今後からは気をつけます!
それとやりたいことは、
まず最初にボタンが押される(i = 1)
⇩
一回目のボタンが押されて、setIntervalが動いている最中にもう一回押される(i = 2)
⇩
2回目が押されたら今動いているsetIntervalを止めて、settimeの値を初期化する。
という感じです!
でも今はiが2以上になっても、settimeの値は変更されるのですがclearIntervalが動きづつけてしまいます。わかりにくかったらすみません!
interの関数は、いつ呼ばれるのですか?
ボタンが押されたときです!
chrome.tabs.query( {'url': "*"}, function(tabs){}
でURL指定したサイト(*は仮置き)からボタンが押されたいう情報が別jsファイルから true/false で送られてきます。
回答出してますので、
一度ご確認ください。
回答1件
あなたの回答
tips
プレビュー