我想动态更改setInterval的区间值。由于在setInterval回调函数中存在一个循环,我很挣扎。我看到了很多关于stackoverflow的问题。但是没有任何解决方案可以帮助我。如果有人知道答案,请用一个例子来解释。谢谢。 这是我的代码。动态更改setInterval值
<html>
<head>
<script type="text/javascript">
var speed = 10;
function updateSlider(slideAmount) {
speed = slideAmount;
}
function load() {
downloadUrl("points.xml", function (data) {
/* code */
abc();
});
function abc() {
function track() {
/* code */
downloadUrl("points.xml", function (data) {
var xml = data.responseXML;
var points = xml.documentElement.getElementsByTagName("point");
var i = 0;
setInterval(function() {
if (i != points.length) {
alert(speed);
}
i++;
}, 100 * speed);
});
}
track();
}
}
function downloadUrl(url, callback) {
var request = window.ActiveXObject ? new ActiveXObject('Microsoft.XMLHTTP') : new XMLHttpRequest;
request.onreadystatechange = function() {
if (request.readyState == 4) {
request.onreadystatechange = doNothing;
callback(request, request.status);
}
};
request.open('GET', url, true);
request.setRequestHeader("Content-type", "text/xml");
request.send(null);
}
function doNothing() {
}
</script>
</head>
<body onload="load();">
<div id="slider">
5% <input id="slide" type="range" min="1" max="20" step="5" value="10" onchange="updateSlider(this.value)" /> 200%
</div>
<div id="chosen">10</div>
</body>
一次的间隔设置,它不能改变,但可以通过'clearInterval'停止并重置。为了您的需要,使用'setTimeout'并重复使用更改的超时值重新进行设置。 – marekful
你可能想看看[这个答案](http://stackoverflow.com/a/19801315/1465828) – Aprian