与上述小提琴一样。我可以在单击时展开div,setInterval将在3000ms后折叠div,但尝试再次单击该按钮不会重新展开div。
这是JS代码(完整的JSfiddle在上面):
function growDiv(div) {
growDiv = document.getElementById(div);
if (growDiv.clientHeight) {
growDiv.style.height = 0;
} else {
var wrapper = document.querySelector('.measuringWrapper');
growDiv.style.height = wrapper.clientHeight + "px";
}
setInterval(function(){growDiv.style.height = 0},3000);
}
答案 0 :(得分:0)
问题是由于growDiv
函数名称和变量名称冲突造成的。更改变量名称或将其设置为this。
function growDiv(div) {
var growDiv = document.getElementById(div);
if (growDiv.clientHeight) {
growDiv.style.height = 0;
} else {
var wrapper = document.querySelector('.measuringWrapper');
growDiv.style.height = wrapper.clientHeight + "px";
}
setInterval(function () {
growDiv.style.height = 0
}, 3000);
return;
}
<小时/> 更新:
var flag = false;
function growDiv(div) {
var growDiv1 = document.getElementById(div);
if (flag) return;
flag = true;
var wrapper = document.querySelector('.measuringWrapper');
growDiv1.style.height = wrapper.clientHeight + "px";
setTimeout(function () {
growDiv1.style.height = '0px';
flag = false;
}, 3000);
return;
}
我设置了一个标志,并修改了变量名,以确保它有效。
干杯!!
答案 1 :(得分:0)
除了将growDiv
同时保留为函数名和变量名之外,您已完成所有操作。任何尝试改变任何一个
更新了JsFiddle http://jsfiddle.net/tfwqD/5/