2017-02-09 78 views
0

我試着在兩個函數之間做一個按鈕切換,但是我無法讓它工作。你們能告訴我爲什麼嗎?在兩個函數之間切換不起作用

function a(el) { 
    document.getElementById("myNav").style.height = "100%"; 
} 

function b(el) { 
    document.getElementById("myNav").style.height = "0%"; 
} 

$("menubutton").click(function() { 
    return (this.tog = !this.tog) ? a() : b(); 
}); 

它應該打開/關閉導航,但它什麼都沒有:/

+6

你的選擇錯了,它正在尋找一個無效的''元素。推測這應該是'$(「#menubutton」)或'$(「。menubutton」)'。一旦你修復你的代碼工作正常:https://jsfiddle.net/d9k8yr4h/。投票結束爲錯字。還要注意,通過在'#myDiv'元素上切換一個類,您可以使代碼更加簡單(並遵循更好的練習):https://jsfiddle.net/d9k8yr4h/1/ –

+2

this.tog應該是什麼?通常最好是通過兩個不同的CSS類來處理這個問題,並使用'toggleclass'('class1 class2')'。單獨的標記,CSS和JavaScript。 – Connum

+0

在我看來,你試圖隱藏「myNav」。如果是這樣,你可以使用$(「#myNav」)來實現。fadeToggle();正如第一條評論所說,你的選擇是錯誤的 – Knriano

回答

0

有在你的代碼的幾個錯誤。 無論如何,如果我得到你的要求(即強制切換的myNav組件的可見性),並假設菜單按鈕是一鍵ID:

$("#menubutton").click(function() { 
$("#myNav").toggle(); 

}); 

見規格: http://api.jquery.com/toggle/

相反,你需要一個顯示功能和一個隱藏功能爲您的組件,您可以使用$("#myNav").show()$("#myNav").hide()

0

這將是一個長時間來解釋爲什麼,但他們的方式,我想它不適用於toggleClass。 無論如何,Rory McRossan(我的問題的第一條評論)發現解決方案只是一個錯字。我很確定我嘗試了這個解決方案,但我顯然沒有。謝謝你Rory