0

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

上記のフィドルと同様。クリックすると div を展開でき、setInterval は 3000 ミリ秒後に 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);

} 
4

2 に答える 2

0

問題は、growDiv関数名と変数名の競合によるものです。変数名を変更するか、このようにローカルにします。

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

フラグを設定し、変数名を変更して、それが機能することを確認しました。

乾杯!!

于 2013-08-21T11:18:33.807 に答える
0

growDiv関数名と変数名の両方を保持することを除いて、すべて正しく実行しました。いずれかを変更してみてください

更新された JsFiddle http://jsfiddle.net/tfwqD/5/

于 2013-08-21T11:20:17.100 に答える