javascript - 如何以延迟方式调用函数
问题描述
我有一个文本框,每当用户输入内容时,我都想更新 span 的内容。但是,我确实想在更新跨度之前等待一段时间。我尝试使用 setTimeout 甚至 setInterval 但它似乎不起作用。
这是我的html:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Sample Title</title>
</head>
<body>
<input type="text" id="text-box-1" />
<span id="results"></span>
</body>
</html>
还有我的 JS:
function update(textValue){
document.querySelector("#results").innerHTML = textValue;
}
document.querySelector("#text-box-1").onkeyup = function(e){
setInterval(update(document.querySelector("#text-box-1").value), 5000);
}
当我在文本框中输入时,它开始显示在跨度内,而不是等待 5 秒。我在这里想念什么?
谢谢。
解决方案
setInterval() 函数有两个参数,一个函数和一个超时值。你给了它一个语句,它立即被执行,然后 setInterval() 函数在 5 秒内什么都不做,因为它没有被赋予一个真正的函数来执行。
只需将语句包装在匿名函数中即可获得所需的结果。:)
document.querySelector("#text-box-1").onkeyup = function(e){
setInterval(function(){update(document.querySelector("#text-box-1").value)}, 5000);
}
希望这有帮助!
推荐阅读
- sql - SQL 查询的问题。选择具有 max() 列的行
- django - Django AuthenticationForm 是否使用 is_valid() 进行身份验证?
- php - Laravel如何查询数据透视表?
- python-3.x - 解决 re.compile 掩码/密码的问题
- javascript - jquery:如何检查是否设置了事件
- string - 我编写了一个函数来将字符串分成由 $ 分隔的部分现在我需要使用 select from 来访问它,但出现错误
- javascript - 当数据库中没有数据时,Select2 AJAX 不显示“未找到数据”,而是显示搜索参数作为选择选项
- sql - 优化 postgresql 查询
- c++ - WinUsb with C++ Builder 10.3 社区版
- html - 没有从 soup.findAll() 获得所有结果