在此Javascript代码中,setInterval()在clearInterval()之后不起作用
setInterval() not working after clearInterval() in this Javascript code
我已经被这个问题扯掉了我的头发几个晚上了:
我试图用JavaScript创建一个扩展div。这是HTML文件的一部分:
<div id="bbc_div" class="bbc_div" style="display:none; height:200px;">
<input type="button" value="Show BBC" id="bbc_button" onclick="onclickBBC('bbc_div')" />
这里是神奇的不工作的JavaScript文件:
var maxHeight = 100;
var curHeight = 1;
var wait = 5;
var timerID = new Array();
function onclickBBC(obj) {
if (document.getElementById(obj).style.display == "none") {
slideDown(obj);
}
else {
document.getElementById(obj).style.display="none"
}
}
function slideDown(obj) {
document.getElementById(obj).style.height="1px";
document.getElementById(obj).style.display="block";
timerID[obj] = setInterval("slideDownExec('"" + obj + "'")", wait);
return;
}
function slideDownExec(obj) {
if (curHeight <= maxHeight) {
curHeight++;
document.getElementById(obj).style.height=curHeight + "px";
}
else {
endSlide(obj);
}
return;
}
function endSlide(obj) {
clearInterval(timerID[obj]);
return;
}
当我重新加载页面时,div展开一次到正确的高度。但是,如果我按下按钮,而没有重新加载页面后再次隐藏,它不工作。display:block;
工作,但setInterval()
不能启动。所以这发生在clearInterval()
执行之后。为什么clearInterval()
会永久地杀死我的setInterval()
?
计时器正在运行,您只需要重置一个变量:
function slideDown(obj)
{
document.getElementById(obj).style.height = "1px";
curHeight = 1;
我会使用jQuery,这是一个更容易。
您在slideDown
的顶部没有设置curHeight
为1
的问题。如果没有发生这种情况,slideDownExec
顶部的If语句将只在第一次工作。
另外,JavaScript允许非整数数组索引吗?
> a['i'] = 4
4
> a
[]
> a['i']
4
你实际上做的是添加一个名为i
的属性到数组对象。不如使用空对象而不是数组。
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- JQuery hide()在show()之后不起作用,反之亦然
- ng模型在$(element).clone()之后不起作用
- CKEditor - 插入文本在 setData 之后不起作用
- UI - 手风琴在 empty() 和 append() 之后不起作用
- Ckeditor插件功能在使用setData(“hai”)之后不起作用;
- Jquery事件在主干呈现中/之后不起作用
- 某些函数在 .append 之后不起作用
- jquery ajax 在 str.rereplace 之后不起作用
- CSS :悬停在 jquery load();之后不起作用
- jQuery .click() 在 replaceWith() 之后不起作用
- JavaScript 在 document.write 之后不起作用
- CSS 在 .after() 之后不起作用
- AngularJS$apply在输入类型范围的ngChange之后不起作用
- ExpressJs的res.sendFile在中间件之后不起作用
- JQuery hide()在fadeIn()之后不起作用
- JavaScript For循环在代码的某一行之后不起作用
- Focus()似乎在onblur()之后不起作用
- ASP.NET ajax函数在onchange事件之后不起作用
- 在此Javascript代码中,setInterval()在clearInterval()之后不起作用