>我不明白为什么这个函数在 Edge 上无法正常工作。
function contactos(thi)
{
var contactos = document.getElementById('contactos');
window.scrollTo(0, contactos.offsetTop - 160 );
}
这是 html
<a href="javascript:void(0)" onclick="contactos(this)">Contatos</a>
我刚刚在 Edge 上测试了window.scrollTo()
,它按预期工作。
唯一想到的是,也许contactos
不存在,或者它没有offsetTop
属性。要调试它:
- 转到边缘
- 打开开发人员工具(按 F12(
- 在控制台选项卡中,写入
document.getElementById('contactos')
- 如果它打印出
undefined
的其他内容,则存在。 - 写
document.getElementById('contactos').offsetTop
- 如果它打印
undefined
的其他内容,则存在。
如果您成功到达最后一点,那是因为代码中的其他地方存在问题。您可能需要进一步调试。
编辑:您没有 id 为"contactos"的元素。您可以执行以下三项操作之一:
-
由于您要将其传递给您的函数(
function contactos(element)
(,因此您可以window.scrollTo(0, element.offsetTop - 160 );
-
或者,您先设置
var contactos = element
,然后保留其余部分。 -
或者,更好的是,在 html 元素中设置一个 id,如下所示:
<a href="javascript:void(0)" id="contactos" onclick="contactos(this)">Contatos</a>
这里有一个片段。尝试将其设为按钮。
function contactos(element)
{
window.scrollTo(0, element.offsetTop + 160);
}
<button onclick="contactos(this)">Contactos</button>
<!-- gibberish -->
<br/><br/><br/><br/><br/><br/><br/>
<br/><br/><br/><br/><br/><br/><br/>
<p>Text added just to see movement</p>