[問題] 弱弱的問個setInterval的問題

看板Ajax作者 (vincent)時間8年前 (2016/11/19 00:47), 8年前編輯推噓0(0019)
留言19則, 3人參與, 最新討論串1/1
<audio id="audio" src="1.mp3"></audio> <input type="submit" onclick="int" /> <button onclick="clearInterval(int)">Stop interval</button> <script> var audio = document.getElementById("audio"); var int; int = setInterval("play()", 1000); function play() { audio.play(); } </script> 我想製作一個每秒響一次的程式 有2個問題想請教 1. 如何讓它不要載入後自動執行,等我點擊再開始播放? 2. 當我運行clearInterval之後,為什麼沒辦法再次執行setInterval了? 新手發問,還請版上大大指點一二 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 104.237.91.182 ※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1479487654.A.B9C.html ※ 編輯: iamshuichi (104.237.91.182), 11/19/2016 00:48:12

11/19 01:38, , 1F
把setInterval放到一個function 裡
11/19 01:38, 1F

11/19 11:05, , 2F
onClick裡面要放function,可是你int是一個存有setInterval
11/19 11:05, 2F

11/19 11:05, , 3F
回傳的物件的變數,而不是function,你onclick下去當然不會
11/19 11:05, 3F

11/19 11:05, , 4F
執行。
11/19 11:05, 4F

11/19 11:06, , 5F
所以2的問題單純是你把回傳的物件和function搞混
11/19 11:06, 5F

11/19 11:08, , 6F
試試看像這樣:
11/19 11:08, 6F

11/19 11:08, , 7F
首先button那邊onClick="playInterval()"
11/19 11:08, 7F

11/19 11:09, , 8F
後面定義一個function就叫playInterval來專門處理這個問題
11/19 11:09, 8F

11/19 11:09, , 9F
var playTimer;
11/19 11:09, 9F

11/19 11:09, , 10F
var playInterval = function () {
11/19 11:09, 10F

11/19 11:10, , 11F
playTimer = setInterval(function () {
11/19 11:10, 11F

11/19 11:10, , 12F
audio.play();
11/19 11:10, 12F

11/19 11:10, , 13F
}, 1000);
11/19 11:10, 13F

11/19 11:10, , 14F
}
11/19 11:10, 14F

11/19 11:11, , 15F
這樣只有你特地呼叫playInterval這個function的時候才會執
11/19 11:11, 15F

11/19 11:11, , 16F
行裡面那些像是什麼setInterval之類的內容
11/19 11:11, 16F

11/19 11:11, , 17F
當然因為我上面變數名稱有換過,clearInterval()裡面也要傳
11/19 11:11, 17F

11/19 11:11, , 18F
對應的變數名稱才行
11/19 11:11, 18F

11/19 13:58, , 19F
可以了,非常感謝 ^ ^
11/19 13:58, 19F
文章代碼(AID): #1OBp2ckS (Ajax)
文章代碼(AID): #1OBp2ckS (Ajax)