2013-08-21 35 views
0

http://jsfiddle.net/tfwqD/1/展開div onclick後自動摺疊同一div,無法再次展開

與上面的小提琴一樣。我可以在單擊時展開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

的問題是由於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; 
} 

我已經設置了標誌,並還修改了變量名,只是爲了確保它的工作原理。

乾杯!

+0

這工作,但點擊後的「閱讀更多」鏈接,並讓它崩潰,然後再次單擊它,並重復該過程幾次股利似乎打開並關閉得更快,而不是顯示整個div。 –

+0

嘗試設置一個標誌來停止第二次點擊。 – bhb

+0

它仍然與您更新的旗幟Jsfiddle一樣。它似乎忽略了國旗,並沒有保持間隔 –

0

除了保留growDiv作爲函數名稱和變量名稱外,您已經完成了所有操作。改變任何一個任何嘗試

更新的jsfiddle http://jsfiddle.net/tfwqD/5/