2013-02-26 79 views
0

因此,我的網站在鏈接到不同頁面的子頁面的頁眉中有下拉菜單。像主按鈕鏈接到about.php和懸停菜單鏈接到about.php#contacts等等使用JavaScript鏈接的散列鏈接問題

現在,在這些頁面中的那個孩子的網頁,他們不是單獨的網頁,但使用JavaScript函數修改開/關被切換顯示css值。

所以,如果我在索引,並點擊about.php#contacts,聯繫人內容顯示就好了。但是,如果我在關於頁面,任何帶有指向關於頁面的散列的鏈接都不起作用。對於其他頁面,它將起作用,但是如果哈希鏈接指向當前頁面,則不起作用。在地址欄中,url會發生變化,但我猜測該頁面或腳本需要強制重新加載才能顯示新內容。

這是我正在使用的相關代碼,有沒有更好的方法來完成我正在嘗試做的事情?

//Drop down 
<ul><li><a href="about.php">About Us</a> 
<ul><li><a href="about.php#profile">contacts</a></li> 
//More.. 
</ul></li></ul> 

//Menu on the page 
<ul> 
<li><a href="javascript:showlayer('contacts');"><span>Contacts</span></a></li> 
//More 
</ul> 

//Javascript code that handles everything 
<script language="javascript"> 
var hash = window.location.hash; 
var selectedDiv = hash.split('#')[1]; 
if(selectedDiv != null) 
{ 
    showlayer(selectedDiv); 
} 
function showlayer(name){ 
    document.getElementById("contacts").style.display = "none"; 
    //More 
    document.getElementById(name).style.display = "block"; 
} 
</script> 

回答

1

點擊指向當前頁面的鏈接不同的哈希將不會重新加載頁面。

相反,您需要爲hashchange事件添加處理程序,並在其中運行代碼。

更好的是,用CSS :target選擇器完全替換您的代碼。

+0

感謝hashchange的工作。我會研究一下CSS。 – gta0004 2013-02-26 23:36:59