我从未使用setInterval()
而我需要一些建议,因为我无法理解这一点。我想创建一些事件监听器。
比如说我想检查选择菜单中的选项长度,但第三方脚本通过Ajax请求填充选择菜单的内容。不幸的是,我不允许触摸第三方脚本,所以我想要有一个等待和监听要添加的内容的功能,然后可以执行它的任务。我知道的是我的vauge ...但是和我在一起。
说我的网页上有以下内容:
<select size="7" id="cat"> </select>
onload这会填充这样的选项:
<option value="Category 1">Category 1</option>
<option value="Category 2">Category 2</option>
<option value="Category 3">Category 3</option>
<option value="Category 4">Category 4</option>
我打算添加一个也加载onLoad的函数(或者确切地说是$(document).ready()),它将监听选项的长度,如果大于零,我们希望做一些事情(在此例如警报)
function checkLen(){
if($('#cat option').size() > 0){
return true;
}else{
return false;
}
}
function takeDefault(){
var ourInterval = setInterval("checkLen();", 1000);
if(ourInterval == true){
alert("Okay I will do something now");
clearInterval(ourInterval);
}
// Now I will perform some other tasks
}
$(document).ready(function() {
takeDefault();
});
现在这不起作用,因为我不太懂。 if(checkLen == True)条件只进行一次,我需要每秒完成一次,直到填充选择菜单。有人可以向我解释一下我要做什么或如何更好地定位我的代码。
答案 0 :(得分:4)
为简单起见,我使用了不同的元素,但这个想法仍然是相同的:
var listen = setInterval(function () {
if ($('input').val().length > 0) {
console.log('has changed, should call callback');
clearInterval(listen);
}
}, 1000);
对于你的情况,这应该是(未经测试的):
function takeDefault(){
var ourInterval = setInterval(function () {
if ($('#cat option').size() > 0) {
alert("Okay I will do something now");
clearInterval(ourInterval);
}
}, 1000);
// Now I will perform some other tasks
}
答案 1 :(得分:0)
ourInterval
不是setInterval
执行的函数的返回值。它是您可以用来取消间隔的值。
其次,不是一定间隔检查,为什么不在输入上注册一个监听器,并在它改变时做一些事情?
像
这样的东西