我有一个html结构,如下所示也有AJAX API,可以异步刷新第三个div内的span。我想反复检查div3
内的跨度内容,这是由API 动态添加的。如果它包含'嗨'我希望在div3
内显示图像,否则不显示任何内容。
<div id="div1">
<div id="div2">
<div id="div3">
<span>Hi</span>
</div>
</div>
</div>
<script type="text/javascript">
$(function(){
(function loopsiloop(){
setTimeout(function(){
var tmp = $('#div3').find("span").val();
if(tmp=='hi'){
document.getElementById("myChatLinkInfo").innerHTML ='<img src="http://slovnikonline.com/img/hi-ohio-logo.jpg">';
}
loopsiloop();
},4000);
})();
loopsiloop();
});
</script>
答案 0 :(得分:1)
有两种方法可以重复一项功能:setInterval()
和setTimout( // call fn inside itself )
。
根据我的经验,第二种方式是最好的,因为如果某些内容干扰setInterval
功能,它将无法正确调整其时间 - 随着时间的推移,您最终可能会有100%的浏览器使用率(基本上是冻结app)setInterval
试图赶上。参见:
http://www.erichynds.com/blog/a-recursive-settimeout-pattern
您的代码看起来像这样:
$(function(){
(function loopsiloop(){
setTimeout(function(){
//AJAX below
var tmp = $('#checkme').val();
$('#freshme').text(tmp);
//AJAX ABOVE
loopsiloop();
},4000); // <=== 4 sec delay
})();
loopsiloop();
}); //END document.ready
以下是获取AJAX基础知识的一些帖子: