通过javascript转到一个锚

通过javascript转到一个锚,javascript,sharepoint,anchor,Javascript,Sharepoint,Anchor,我正在尝试用JavaScript创建一个函数,将用户带到HTML锚。唯一的问题是,我正在尝试在SharePoint的.aspx页面中创建它 我有一个隐藏的表,我用JavaScript函数将其取消隐藏,但该表位于页面的底部,所以我在表旁边添加了一个锚,并尝试超链接到它。。。但它不起作用。。。这是我的代码: function GoTo() { window.location.hash="change" } <a name="change"></a> 函数GoTo(

我正在尝试用JavaScript创建一个函数,将用户带到HTML锚。唯一的问题是,我正在尝试在SharePoint的.aspx页面中创建它

我有一个隐藏的表,我用JavaScript函数将其取消隐藏,但该表位于页面的底部,所以我在表旁边添加了一个锚,并尝试超链接到它。。。但它不起作用。。。这是我的代码:

function GoTo() {
    window.location.hash="change"
}

<a name="change"></a>
函数GoTo(){
window.location.hash=“更改”
}

有什么想法吗?

将您的
window.location.hash=“Change”
更改为
window.location.href=“#Change”
我已经测试过了,这在IE8、Chrome、FF和Safari中都可以使用

可能还有另一种方法:

function scrollToAnchor(anchorName){
  //set the hash so people can bookmark
  window.location.hash = anchorName;
  //scroll the anchor into view
  document.getElementsByName(anchorName)[0].scrollIntoView(true);
}

如果散列方法不起作用,请尝试将窗口设置为较小的大小,以便它可以跳转到散列标记

我刚刚尝试过,它对我有效。尝试将
#change
添加到地址栏,看看它是否达到了预期效果。

JD Daz-

根据您的简要说明,我创建了这个简单的测试页面,它似乎可以工作。也许你应该把你自己的页面复制粘贴到一个新的页面上,然后剪掉一些东西,直到它工作:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script language="javascript">
        function GoTo() {
            var myTable = document.getElementById("myTable");
            myTable.style.visibility = "visible";
            window.location.hash = "change";
        }

    </script>
</head>
<body>

<a href="javascript:GoTo();">Click Here</a><br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
14<br />
15<br />
16<br />
17<br />
18<br />
19<br />
20<br />
21<br />
22<br />
23<br />
24<br />
25<br />
26<br />
27<br />
28<br />
29<br />
30<br />
<table id="myTable" border="1" width="500" style="visibility:hidden" backcolor="black">
    <tr>
        <td>Shown</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>
    </tr>
    <tr>
        <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>
    </tr>
    <tr>
        <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>
    </tr>
    <tr>
        <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>
    </tr>
</table>
<a name="change"></a>
</body>
</html>

函数GoTo(){
var myTable=document.getElementById(“myTable”);
myTable.style.visibility=“可见”;
window.location.hash=“更改”;
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
展示
要解决您的问题,请将按钮更改为

<input type="button" value="Request For Change" onclick="GoTo(); return false;">

问题在于单击时,
input type=“button”
将提交页面。因此,当您单击它时,它会向下滚动到您的锚元素,但随后会重新加载页面,这与目的背道而驰。您需要将
returnfalse
添加到
onclick
处理程序的末尾,以抑制默认操作


另外,
onclick
应该都是小写。

我想你应该使用

你确定函数调用正确吗?顺便说一下,你应该用分号结束你的语句。这就是我得到的。。。一个按钮,它是“”函数,它是:'function GoTo(){window.location.hash=“change”}'和锚点:'你能给我们看一个它不工作的页面吗?错误。虽然URL中需要
#
字符,但它不是
散列属性的一部分。只是想再次发布,就像我发布后您发布的那样:这不起作用,Gregoire。代码现在是:函数GoTo(){window.location.hash=“#change”},但它仍然不起作用。。。顺便说一下,没有JavaScript错误。有什么想法吗?这是SharePoint可能会阻止的吗?我就是这么想的。我创建了一个测试页面,它工作得非常好。我一把它放进SharePoint,它就停止工作了。我更改了一个ASPX页面并插入了自定义JavaScript、CSS和HTML-我以前没有遇到过任何问题,直到现在。。。我不知道为什么。谢谢你的努力,马克,非常感谢