在此Javascript代码中,setInterval()在clearInterval()之后不起作用
几个晚上以来,我一直在为这个问题烦恼: 我正在尝试用JavaScript创建一个扩展div。以下是HTML文件的一部分:在此Javascript代码中,setInterval()在clearInterval()之后不起作用,javascript,setinterval,Javascript,Setinterval,几个晚上以来,我一直在为这个问题烦恼: 我正在尝试用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')" /> 下面是神奇的非工作JavaS
<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;
}
var maxHeight=100;
var-curHeight=1;
var-wait=5;
var timerID=新数组();
英国广播公司(obj)的职能{
if(document.getElementById(obj.style.display==“无”){
向下滑动(obj);
}
否则{
document.getElementById(obj.style.display=“无”
}
}
函数向下滑动(obj){
document.getElementById(obj.style.height=“1px”;
document.getElementById(obj.style.display=“block”;
timerID[obj]=setInterval(“slideDownExec(\“”+obj+“\”),等待);
返回;
}
函数slideDownExec(obj){
if(curHeight您有一个问题,slideDown
顶部的curHeight
未设置为1
。如果没有出现这种情况,则slideDownExec
顶部的if语句将只在第一次工作
此外,JavaScript是否允许非整数数组索引
> a['i'] = 4
4
> a
[]
> a['i']
4
实际上,您正在向数组对象添加一个名为i
的属性。您最好使用一个空对象而不是数组。您遇到了一个问题,即curHeight
没有在slideDown
顶部设置为1
。如果没有发生这种情况,则在slidedownxe>顶部的If语句c
仅在第一次使用时有效
此外,JavaScript是否允许非整数数组索引
> a['i'] = 4
4
> a
[]
> a['i']
4
实际上,您正在向数组对象添加一个名为i
的属性。您最好使用一个空对象而不是数组。计时器正在运行,您只需重置一个变量:
function slideDown(obj)
{
document.getElementById(obj).style.height = "1px";
curHeight = 1;
我会使用jQuery来实现这一点,这要简单得多。计时器正在运行,您只需重置一个变量:
function slideDown(obj)
{
document.getElementById(obj).style.height = "1px";
curHeight = 1;
我会使用jQuery来实现这一点,这要简单得多