2017-05-05 87 views
-1

我可以在javascript中設置兩個其他函數的setInterval參數嗎?我可以在javascript中設置兩個其他函數的setInterval參數嗎?

取而代之的是...

myVar = setInterval(function1, 8000); 

我想做到這一點...其中函數2設置毫秒。

myVar = setInterval(function1, function2); 

下面的例子是我想要做的。這不起作用。返回頁面上的「口吃」。

實施例#1 https://thehighcountrydiscgolfclub.com/friends/jiesen/example01.html

任何指導被理解。 即使這是一個更好的方式來問這個問題...

這是收音機組,選擇菜單和按鈕的html。

<input type="radio" value="chime-04" name="rad" onclick="soundSelect(this.value);" checked="checked">Chime 
<input type="radio" value="bell-04" name="rad" onclick="soundSelect(this.value);">Bell 
<input type="radio" value="bleep-04" name="rad" onclick="soundSelect(this.value);">Bleep 
<br> 
<audio id="audio"> 
    <source src="" type="audio/ogg"> 
    <source src="" type="audio/wav"> 
    <source src="chime-04.mp3" type="audio/mpeg" id="sound"> 
</audio> 
<br> 
<select id="space"> 
    <option value="4000">0:04 Seconds</option> 
    <option value="6000">0:06 Seconds</option> 
    <option value="8000">0:08 Seconds</option>   
</select> 
<br> 
<button type="button" id="toggle" onclick="runSoundInterval()">Play/Pause</button> 


function soundSelect(val){ 
    var audio = document.getElementById("audio"); 
    var aud = document.getElementById("sound"); 
    aud.src=val+".mp3"; 
    audio.load(); 
    audio.play(); 
} 
function intervalSelect(val){ 
    var space = document.getElementById("space"); 
    var value = space.options[space.selectedIndex].value; 
} 
function runSoundInterval() { 
    myVar = setInterval(soundSelect, intervalSelect); 
} 

在這裏,我嘗試將三個函數凝聚成一個函數。我喜歡。單選按鈕播放聲音並提醒正確選擇的選擇菜單值,但不會重複播放聲音。按鈕僅返回警報,但沒有聲音,也沒有重複。請注意,我試圖從「value」中提取setInterval毫秒。添加警報以證明從選擇菜單中選擇了正確的值。警報只是一個測試,將來需要刪除。不完全工作。

實施例#2 https://thehighcountrydiscgolfclub.com/friends/jiesen/example02.html

function soundSelect(val){ 
var space = document.getElementById("space"); 
    var value = space.options[space.selectedIndex].value; 
    alert(value); 
var audio = document.getElementById("audio"); 
    var aud = document.getElementById("sound"); 
    aud.src=val+".mp3"; 
    audio.load(); 
    audio.play(); 
} 
window.setInterval(soundSelect, value); 
+2

的第二個參數被認爲是一個數。它可以是任何返回數字的表達式,包括函數* call *,而不是函數*引用*。但即使你調用了'intervalSelect()'函數,它也不會返回一個值,或者實際上做了任何有用的事情,因爲它只是將值分配給* local *變量,然後不被使用。順便說一下,你可以用'space.value'獲取你選擇的元素的當前值,不需要通過'.options'集合。 – nnnnnn

+0

@ nnnnnn- IIRC,* selectedIndex *路徑是一些古代版本的Netscape Navigator所必需的,令人驚訝的是這些模因如何持續存在。 – RobG

+0

@RobG - 是的,我記得在IE瀏覽器的版本4左右。 – nnnnnn

回答

3
如果

函數2返回秒,只需使用它的返回值:

myVar = setInterval(function1, function2()); 
+0

這個撇號肯定讓你很生氣。 – FrankerZ

相關問題