我需要帮助弄清楚如何在为函数保留“str”的同时设置间隔。
客户端选择一个选项,函数“GET”是选定的选项。但是当它在 setInterval 中刷新时,它会丢失字符串。我该怎么做?
我试过这个:
<script type="text/javascript">
function countrystats(str)
{
if (str=="")
{
document.getElementById("countrystats").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("countrystats").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","countrystats.php?q="+str,true);
xmlhttp.send();
setInterval(countrystats, 5000);
}
</script>
希望你能帮我解决这个烂摊子:-)
我知道这可以用一些 jQuery 来完成,但我似乎可以让它工作。也许这两件事是相关的,我不知道:-)
以下是函数 countrystats 获取输入的方式:
script type="text/javascript">
$("#countrystats_menu > li > a").click(function (ev) {
var str = $(this).html();
countrystats(str);
$('#country_span').html(str);
});
</script>
编辑/解决方案:
似乎问题在于,在执行 setInterval 时,它丢失了附加的 str,但是这段代码保留了它。
setTimeout((function(strPriorToTimeout)
{//IIFE's scope preserves state of str variable
return function()
{
countrystats(strPriorToTimeout);
};
})(str),5000);