2017-05-05 119 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

相关问题