滚动到页面上的特定位置无法使用浏览器Edge

时间:2017-08-08 08:07:33

标签: javascript html

我无法理解为什么此功能在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>

1 个答案:

答案 0 :(得分:0)

我刚刚在Edge上测试了window.scrollTo(),它按预期工作。

唯一想到的是,contactos可能不存在,或者它没有offsetTop属性。调试它:

  1. 转到Edge
  2. 打开developer tools(按F12)
  3. 在控制台标签中,写下document.getElementById('contactos')
  4. 如果它打印出undefined以外的其他内容,则存在。
  5. 撰写document.getElementById('contactos').offsetTop
  6. 如果它打印出undefined以外的其他内容,则存在。
  7. 如果您成功到达最后一点,那是因为代码中的其他位置存在问题。您可能需要进一步调试。

    修改:您没有带有ID&#34; contactos&#34;的元素。你可以做以下三件事之一:

    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>

    4. 这是一个片段。尝试将其设为按钮。

      &#13;
      &#13;
      function contactos(element) 
      {
          window.scrollTo(0, element.offsetTop + 160);    
      }
      &#13;
      <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>
      &#13;
      &#13;
      &#13;