我现在已经把头发撕掉几个晚上了解这个问题:
我正在尝试用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()
?
答案 0 :(得分:1)
计时器正在运行,您只需要重置一个变量:
function slideDown(obj)
{
document.getElementById(obj).style.height = "1px";
curHeight = 1;
我会使用jQuery,这很容易。
答案 1 :(得分:0)
curHeight
顶部1
未将slideDown
设置为slideDownExec
。如果没有发生这种情况,> a['i'] = 4
4
> a
[]
> a['i']
4
顶部的if语句将仅在第一次运行。
此外,JavaScript是否允许非整数数组索引?
i
您实际在做的是向数组对象添加名为{{1}}的属性。您也可以使用空对象而不是数组。