2012-07-03 62 views
-1

我在我的index.php中有一個按鈕,它顯示了一個菜單並隱藏了頁面的內容。但是它假設爲兩個不同的模板工作。我的功能基本如下所示:是否有可能從兩個不同的.php頁面使用唯一的javascript函數隱藏兩個div?

function show_menu(); 
{ 
document.getElementById('menu').style.display="block"; 
document.getElementById('content1').style.display="none"; 
document.getElementById('content2').style.display="none"; 
} 

如果我只放了其中一個內容,將其隱藏起作用。但是,如果我把兩個內容都沒有。這是怎麼回事?這是不可能的還是我做錯了什麼?

+0

你什麼錯誤,當它不工作? – Bergi

回答

3

我不知道如果我沒有得到你的問題,但如果我這樣做,問題是,你不能設置不網頁上的存在元素的樣式。你必須檢查null值:

function show_menu() 
{ 
document.getElementById('menu').style.display="block"; 

var content1 = document.getElementById('content1'), 
    content2 = document.getElementById('content2'); 

if (content1) { 
    content1.style.display="none"; 
} 
if (content2) { 
    content2.style.display="none"; 
} 
} 
+0

** + 1 **對於消失的分號! – arttronics

+0

哦,我現在明白了!謝謝你,它完美的作品! – Kestion

+2

@ user1498653,不要忘記接受這個答案,因爲它現在正在完美工作。 – arttronics

2
function show_menu() //Removed the semicolon, could be the culprit causing the problem 
{ 
    document.getElementById('menu').style.display="block"; 
    document.getElementById('content1').style.display="none"; 
    document.getElementById('content2').style.display="none"; 
} 
+0

** + 1 **好的分號捕獲。 – arttronics

1

我想這有一個在你的模板之一content1號元素。然後,當訪問不存在元素的style屬性時,代碼將失敗,暫停腳本執行並且不隱藏content2

三種可能的解決方案來我的腦海:

  • 使用相同的ID在所有模板。如果兩者都包含具有相同功能目的的content,則應該將它們命名爲相同。您的腳本將與所有這些模板一起工作。
  • 使用不同的腳本或變量指示使用哪個模板,以便腳本可以確定正確的ID。
  • 檢查元素的存在動態(你總是應該做的):
function show_menu() { 
    var menu = document.getElementById('menu'), 
     content1 = document.getElementById('content1'), 
     content2 = document.getElementById('content2'); 

    if (menu) 
     menu.style.display="block"; 
    if (content1) 
     content1.style.display="none"; 
    if (content2) 
     content2.style.display="none"; 
} 
+0

** + 1 **由於遲到參加派對(以及4種解決方案)。 – arttronics

+0

嘿,我遲到了,因爲我帶來了3個解決方案! :-) – Bergi

+0

我很好奇爲什麼每個if語句後都沒有'{}'? – arttronics

相關問題