使用用户输入JavaScript设置计时器
我对编程很陌生 对于一个学校项目,我正在尝试设置一个setTimeout();使用用户输入的函数。 这是我的密码:使用用户输入JavaScript设置计时器,javascript,function,settimeout,Javascript,Function,Settimeout,我对编程很陌生 对于一个学校项目,我正在尝试设置一个setTimeout();使用用户输入的函数。 这是我的密码: let header = document.getElementById('header'); let input = document.getElementById('input'); let btn = document.getElementsByTagName('div')[1]; let response1 = document.getElementById('respon
let header = document.getElementById('header');
let input = document.getElementById('input');
let btn = document.getElementsByTagName('div')[1];
let response1 = document.getElementById('response1');
function playSound() {
setTimeout(function () {
var x = document.getElementById("myAudio")
x.play()
}, 3000); //input.value?? or 1000 * input.value??
}
通常,如果我想在输入框中访问用户的输入,我会键入input.value。
但是,setTimeout函数无法将input.value识别为可设置为用作倒计时的参数。我不知道该怎么办
任何帮助都将不胜感激
setTimeout
函数无法将input.value
识别为可设置为用作倒计时的参数
它确实认识到了这一点。如果遇到错误,则最有可能的输入是文本输入,在这种情况下,您必须先将其值转换为数字,然后才能在setTimeout
中使用它:
let header = document.getElementById('header');
let input = document.getElementById('input');
let btn = document.getElementsByTagName('div')[1];
let response1 = document.getElementById('response1');
function playSound() {
setTimeout(function () {
var x = document.getElementById("myAudio")
x.play()
}, Number(input.value));
}
如果输入的值以秒为单位,请使用input.value*1000
setTimeout
函数无法将input.value
识别为可设置为用作倒计时的参数
它确实认识到了这一点。如果遇到错误,则最有可能的输入是文本输入,在这种情况下,您必须先将其值转换为数字,然后才能在setTimeout
中使用它:
let header = document.getElementById('header');
let input = document.getElementById('input');
let btn = document.getElementsByTagName('div')[1];
let response1 = document.getElementById('response1');
function playSound() {
setTimeout(function () {
var x = document.getElementById("myAudio")
x.play()
}, Number(input.value));
}
如果输入的值以秒为单位,请使用
input.value*1000
动态执行setInterval,您需要调用函数而不是输入文本:
startInterval
onChangeInterval
var有效期;
函数startInterval(_区间){
intervalId=setInterval(函数(){
}(u间期),;
}
函数onChangeInterval(interval){
区间-=100;
clearInterval(intervalId);
startInterval(间隔);
}
要动态执行setInterval,您需要调用函数而不是输入文本:
startInterval
onChangeInterval
var有效期;
函数startInterval(_区间){
intervalId=setInterval(函数(){
}(u间期),;
}
函数onChangeInterval(interval){
区间-=100;
clearInterval(intervalId);
startInterval(间隔);
}
您到底想实现什么目标?你想让用户输入延迟吗?你能公布你得到的确切错误吗(控制台输出)?我在控制台中没有收到错误消息。该函数将立即执行,就像没有超时一样。也就是说,我的playSound函数将立即执行,而不管输入值中的数字是多少。您到底想实现什么?你想让用户输入延迟吗?你能公布你得到的确切错误吗(控制台输出)?我在控制台中没有收到错误消息。该函数将立即执行,就像没有超时一样。也就是说,我的playSound函数将立即执行,而与输入的.value中的数字无关。我很确定setTimeout
会自动将第二个参数转换为数字。这很有效!非常感谢你,我花了两个小时试图弄明白这一点。@dmitryguzeev不,没有。它只将输入的任何字符串视为1,因此setTimeout(foo,“1000”)
与setTimeout(foo,1)
@WaisKamal我在最新的Firefox和Chrome版本上测试了它。如果您将“5000”作为第二个参数传递,它将等待5秒。哦,对不起,您是对的。不知道它是如何为OP工作的:)我很确定setTimeout
会自动将第二个参数转换为数字。这很有效!非常感谢你,我花了两个小时试图弄明白这一点。@dmitryguzeev不,没有。它只将输入的任何字符串视为1,因此setTimeout(foo,“1000”)
与setTimeout(foo,1)
@WaisKamal我在最新的Firefox和Chrome版本上测试了它。如果您将“5000”作为第二个参数传递,它将等待5秒。哦,对不起,您是对的。不知道它是如何为OP工作的:)