html5中的javascript问题求大神指教

varmusic=document.getElementById('awakeAudio');vardelayTime=parseInt(document.getElem... var music = document.getElementById('awakeAudio');
var delayTime = parseInt(document.getElementById("delayTimeInput"));
document.onkeyup = function(event){
var keySpace = event||window.event||arguments.callee.caller.arguments[0];
if(keySpace && keySpace.keyCode==32){/*判断空格键*/
setTimeout(function(){/*设置定时器*/
music.play();
},delayTime);
}
}
上述是js代码

我定义了一个变量delayTime,想把<Input>文本框中的数值赋给delayTime;

目的是:实现按下空格键后,延迟<Input>中输入的自定义的时间后,播放一段音频。也就是你在文本框里输入一个数字,按下空格键后,音频就会延迟你输入数字的毫秒之后播放。

但上述代码,我按下空格键后,音频无延迟直接就播放了。逻辑上找不到错误,麻烦大神给看看。
展开
 我来答
方范贺高
2018-09-25 · TA获得超过168个赞
知道小有建树答主
回答量:248
采纳率:40%
帮助的人:49.1万
展开全部

我改成这样,确实会执行延时,逻辑是没问题的。那你看下delayTime是否获取正确。

还有一个问题就是当我连续多次按空格键的时候就会有问题,应该每次按空格键的时候清除一次延时器,再重新设置延时器。

(你试试重新进入页面,只按一次空格会不会有效果,如果是按一次有效果,按多次就不行了估计是上面说的延时器累积的问题)

追问
我也知道这样是可以的,但我最开始不想把delayTime定死成5000,我是想delayTime是可以通过在里面输入之后修改的,就是可以自定义delayTime的值
追答
所以先让你看下delayTime是否获取正确。
百度网友48429e1
2018-09-25 · TA获得超过336个赞
知道小有建树答主
回答量:340
采纳率:73%
帮助的人:133万
展开全部

应该在事件触发以后去获取 input 的值, 而且你获取 input 的方式也不对.

var music = document.getElementById('awakeAudio');
document.onkeyup = function (event) {
  var keySpace = event || window.event || arguments.callee.caller.arguments[0];
  if (keySpace && keySpace.keyCode == 32) {/*判断空格键*/
    var delayTime = parseInt(document.getElementById("delayTimeInput").value);
    setTimeout(function () {/*设置定时器*/
      music.play();
    }, delayTime);
  }
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
元书文7r
2018-09-25 · TA获得超过176个赞
知道小有建树答主
回答量:290
采纳率:75%
帮助的人:73万
展开全部
var delayTime = parseInt(document.getElementById("delayTimeInput"));
delayTimeInput实际上是个 input吗? 你这样获取不到时间吧
你可以console.log(delayTime )
看看是不是 你要取的值
var delayTime = parseInt(document.getElementById("delayTimeInput").value);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式