Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用javascript链接时出现哈希链接问题_Php_Javascript_Drop Down Menu_Hash_Menu - Fatal编程技术网

Php 使用javascript链接时出现哈希链接问题

Php 使用javascript链接时出现哈希链接问题,php,javascript,drop-down-menu,hash,menu,Php,Javascript,Drop Down Menu,Hash,Menu,因此,我的网站在标题中有下拉菜单,链接到不同页面的子页面。就像主按钮链接到about.php和悬停菜单链接到about.php#contacts等一样 现在,在这些子页面的每个页面上,它们不是独立的页面,而是使用javascript函数来修改显示css值的开/关 因此,如果我在索引上,单击about.php#contacts,联系人内容就会显示得很好。但是,如果我在about页面上,任何带有指向about页面的散列的链接都不起作用。对于其他页面,它将起作用,但如果哈希链接指向当前页面,它将不起作

因此,我的网站在标题中有下拉菜单,链接到不同页面的子页面。就像主按钮链接到
about.php
和悬停菜单链接到
about.php#contacts
等一样

现在,在这些子页面的每个页面上,它们不是独立的页面,而是使用javascript函数来修改显示css值的开/关

因此,如果我在索引上,单击
about.php#contacts
,联系人内容就会显示得很好。但是,如果我在about页面上,任何带有指向about页面的散列的链接都不起作用。对于其他页面,它将起作用,但如果哈希链接指向当前页面,它将不起作用。在地址栏中,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>
//下拉列表
    • //更多。。
//页面上的菜单
  • //更多
//处理一切的Javascript代码 var hash=window.location.hash; var selectedDiv=hash.split(“#”)[1]; 如果(selectedDiv!=null) { showlayer(selectedDiv); } 功能显示层(名称){ document.getElementById(“联系人”).style.display=“无”; //更多 document.getElementById(名称).style.display=“block”; }
单击指向具有不同散列的当前页面的链接不会重新加载页面

相反,您需要向
hashchange
事件添加一个处理程序,并在那里运行代码

更好的是,完全用CSS
:target
选择器替换代码