Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.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
Javascript 通过引用外部页面中的锚来扩展隐藏的div_Javascript_Anchor_Hidden - Fatal编程技术网

Javascript 通过引用外部页面中的锚来扩展隐藏的div

Javascript 通过引用外部页面中的锚来扩展隐藏的div,javascript,anchor,hidden,Javascript,Anchor,Hidden,我有一个脚本,在页面加载时隐藏列表中的某些div(display:none)。Div目录表示对一本书的描述,而整个列表是某种参考书目。每个div都有一个id,例如,“div1”、“div2”等 ... 还有另一个带有菜单的页面,其中包含指向每个此类div的锚定链接: <ul> <li><a href="bibl.html#div1"></li> <li><a href="bibl.html#div2">

我有一个脚本,在页面加载时隐藏列表中的某些div(display:none)。Div目录表示对一本书的描述,而整个列表是某种参考书目。每个div都有一个id,例如,“div1”、“div2”等

  • ...
还有另一个带有菜单的页面,其中包含指向每个此类div的锚定链接:

<ul>  
<li><a href="bibl.html#div1"></li>  
<li><a href="bibl.html#div2"></li>  
...  
</ul>  
  • ...

我希望在单击另一页上的链接时隐藏的div自动展开。我尝试了一些window.location.href的东西,但是没有用-我的JS还很弱。根据我的理解,它应该获取当前url并检查它是否有“#”,然后在id属性中搜索包含右边部分的元素。非常感谢善良的人们。)

您可以在目标页面上执行以下操作:

window.onload = function() {
    var hash = window.location.hash; // would be "#div1" or something
    if(hash != "") {
        var id = hash.substr(1); // get rid of #
        document.getElementById(id).style.display = 'block';
    }
};

本质上,您可以在页面加载时检查窗口的href是否附加了哈希。如果是,则找到
并将样式显示更改为block。

您可以使用
窗口.location.hash
查看哈希值。
从那里,您可以
getElementById(hashValue)
并显示它。

谢谢!我想你可以加上这个

location.href = '#' + id;

并将页面滚动到引用分区的位置。

。现在快乐吗?你有一个:)不,我不高兴。我正在为PHP问题奔波,我很快就能闻到金子的味道了!:)如下面的答案所述,您可能需要添加
location.href='#'+id
作为将样式更改为实际滚动到此元素后的最后一行,是否应该自动执行此操作?@PaoloBergantino只有在加载页面时显示元素时才会执行此操作。但是,如果我们使用接受答案中的JS代码,则不会得到任何滚动(这是有意义的,因为事件的顺序在某种程度上类似于
加载页面代码
->
自动滚动到哈希值
->
执行JS
)。但是,如果您将这一行添加为来自accepted answer的函数的最后一行,那么它将按预期工作
location.href = '#' + id;