展开div onclick并在一段时间后自动折叠相同的div,无法再次展开

时间:2013-08-21 11:12:14

标签: javascript css3 css-transitions

http://jsfiddle.net/tfwqD/1/

与上述小提琴一样。我可以在单击时展开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);

} 

2 个答案:

答案 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;
}

<小时/> 更新:

http://jsfiddle.net/tfwqD/12/

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/