滚动到页面上的特定位置不起作用浏览器边缘



>我不明白为什么这个函数在 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属性。要调试它:

  1. 转到边缘
  2. 打开开发人员工具(按 F12(
  3. 在控制台选项卡中,写入document.getElementById('contactos')
  4. 如果它打印出undefined的其他内容,则存在。
  5. document.getElementById('contactos').offsetTop
  6. 如果它打印undefined的其他内容,则存在。

如果您成功到达最后一点,那是因为代码中的其他地方存在问题。您可能需要进一步调试。

编辑:您没有 id 为"contactos"的元素。您可以执行以下三项操作之一:

  1. 由于您要将其传递给您的函数(function contactos(element)(,因此您可以window.scrollTo(0, element.offsetTop - 160 );

  2. 或者,您先设置var contactos = element,然后保留其余部分。

  3. 或者,更好的是,在 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>

最新更新