作者iamshuichi (vincent)
看板Ajax
標題[問題] 弱弱的問個setInterval的問題
時間Sat Nov 19 00:47:31 2016
<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://webptt.com/m.aspx?n=bbs/Ajax/M.1479487654.A.B9C.html
※ 編輯: iamshuichi (104.237.91.182), 11/19/2016 00:48:12
1F:→ aspdoctor: 把setInterval放到一個function 裡 11/19 01:38
2F:→ Hevak: onClick裡面要放function,可是你int是一個存有setInterval 11/19 11:05
3F:→ Hevak: 回傳的物件的變數,而不是function,你onclick下去當然不會 11/19 11:05
4F:→ Hevak: 執行。 11/19 11:05
5F:→ Hevak: 所以2的問題單純是你把回傳的物件和function搞混 11/19 11:06
6F:→ Hevak: 試試看像這樣: 11/19 11:08
7F:→ Hevak: 首先button那邊onClick="playInterval()" 11/19 11:08
8F:→ Hevak: 後面定義一個function就叫playInterval來專門處理這個問題 11/19 11:09
9F:→ Hevak: var playTimer; 11/19 11:09
10F:→ Hevak: var playInterval = function () { 11/19 11:09
11F:→ Hevak: playTimer = setInterval(function () { 11/19 11:10
12F:→ Hevak: audio.play(); 11/19 11:10
13F:→ Hevak: }, 1000); 11/19 11:10
14F:→ Hevak: } 11/19 11:10
15F:→ Hevak: 這樣只有你特地呼叫playInterval這個function的時候才會執 11/19 11:11
16F:→ Hevak: 行裡面那些像是什麼setInterval之類的內容 11/19 11:11
17F:→ Hevak: 當然因為我上面變數名稱有換過,clearInterval()裡面也要傳 11/19 11:11
18F:→ Hevak: 對應的變數名稱才行 11/19 11:11
19F:→ iamshuichi: 可以了,非常感謝 ^ ^ 11/19 13:58