我有两个JS函数:一个显示进度条的load()函数和一个在加载页面后停止执行加载的kill()函数。 现在,当加载另一个页面时,不会显示进度条,因为知道每个页面都调用了加载功能。 关于问题可能存在的任何提示以及是否有办法解决问题。
这是我的代码:
<script type="text/javascript">
var count=0;
function load(i) {
j = parseInt(i);
document.getElementById("progressBar").style.display = "block";
count=count+1;
if (document.all) {
document.all.btn1.value=count+'%';
document.all.progressbar.pic1.width=2*count;
}
else {
document.getElementById("pic1").width=2*count;
document.getElementById("bar").width=count+'%';
}
if (count<100) {
setTimeout('load(j)',j);
}
if(count==100) {
document.getElementById("progressBar").style.display = "none";
count=0;
}
}
function kill(){
if (document.applets[0].isActive()) {
document.getElementById("progressBar").style.visibility = "hidden";
}
}
</script>
提前谢谢!
答案 0 :(得分:1)
在load()
中,您将显示更改为block
,但在kill()
中,您将可见性设置为hidden
};您应该将显示设置为none
,以便下次再次正确设置为block
。 Read about visibility
优化代码:
<script type="text/javascript">
var count = 0,
win = window,
doc = document,
progressBar = doc.getElementById("progressBar"),
t, j;
function load(i) {
j = parseInt(i);
progressBar.style.display = "block";
count++;
// no actual need to check if doc.all is available
// just select through id
doc.getElementById("pic1").style.width = 2*count;
doc.getElementById("bar").style.width = count+'%';
if (count < 100) {
t = win.setTimeout('load(j)',j);
} else {
progressBar.style.display = "none";
win.clearTimeout(t);
count = 0;
}
}
function kill(){
if (doc.applets[0].isActive()) {
progressBar.style.display = "none";
}
}
</script>
答案 1 :(得分:0)
如果您将setTimeout
指定给变量,则可以使用clearTimeout来阻止它
例如。
设置超时
t = setTimeout('load(j)',j);
然后用它来阻止它
clearTimeout(t);
如果有帮助,请告诉我,并且有道理:)