2013-02-24 55 views
0

我需要一個工作的JavaScript代碼,它只在我的網站上的特定頁面上顯示某個面板,並將其隱藏。這是一個論壇式的設置。面板只在特定頁面上顯示

這是我到目前爲止。

<script type="text/javascript"> 

function ShowPanel() 
{ 
if(document.location.href == "http://www.exampleurl.com") 
{document.getElementById("panel").style.display = "block";} 
else 
{document.getElementById("panel").style.display = "none";} 
} 

</script> 

     <div id="panel" onload="ShowPanel"> 
      Example text. 
     </div> 

根據我擡頭看的示例代碼,所有這些似乎都是合理的,但顯然在某處存在錯誤。什麼都沒發生。

感謝您的檢查!

回答

1

問題是onload事件不能在DIV元素上使用。 onload只能用於文檔主體或外部資源(iframe,圖像,腳本)。

最好的辦法是將JavaScript放在頁面底部。

例如

<div id="panel"> 
    Example text. 
</div> 

<script language="JavaScript"> 
if(document.location.href == "http://www.exampleurl.com"){ 
    document.getElementById("panel").style.display = "block"; 
} 
else { 
    document.getElementById("panel").style.display = "none"; 
}  
</script> 
+0

謝謝,這可能實際上是問題。我目前正在尋找放置和調用腳本的正確位置;將它置於底部並不成功。 我將聯繫論壇服務開發人員尋求支持。 – 2013-02-24 16:38:15

+0

的確,考慮解決這個問題。該論壇運行時沒有功能和調用線路。這很奇怪,但嘿。 – 2013-02-24 17:00:40

0

檢查什麼document.location.href真的是在頁面上鍵入到您的控制檯(F12,通常情況下)。例如,即使網址中沒有一個瀏覽器,大多數瀏覽器都會將尾部斜槓添加到服務器名稱上。這場比賽必須準確無誤地讓你的代碼按照書面的方式工作。

另一種選擇是比較document.location.pathname,它將包含服務器名稱後的所有內容。如果你想做一個大小寫不敏感的比較,你可以使用document.location.pathname.toLowerCase()

+0

謝謝,但這似乎並不是問題。如果URL被指定爲錯誤,則面板將隱藏在所有頁面上,而不是。它仍然顯示。 – 2013-02-24 16:32:24

+0

@TW_ Grant Clement的答案似乎是正確的......你可以通過加入類似'alert(1)'的東西來確保你的代碼運行正常 - 如果你沒有得到這個代碼,你的代碼不會被運行。 – Plynx 2013-02-24 16:34:16

+0

使用警報測試已被證明非常有用! – 2013-02-24 16:59:37

相關問題