javascript - 如何检查此元素是否存在以防止未定义错误的属性

标签 javascript jquery

我收到一个 jquery 错误:Uncaught TypeError: Cannot read property 'top' of undefined

我假设我必须在我的代码中添加一个检查,但它仍然给出错误。我想知道如何正确添加支票

j查询:

  var topOfElement = $('.references-list-container-outer').offset().top;

  $(window).scroll(function () {
    if ($(window).scrollTop() > topOfElement) {
      $('.article-nav-spotlight-chylers-page').fadeOut();
    } else {
      $('.article-nav-spotlight-chylers-page').fadeIn();
    }
  });

最佳答案

试试这个:

  var element = $('.references-list-container-outer');
  var topOfElement = element.length ? element.offset().top : 0;

  $(window).scroll(function () {
    if ($(window).scrollTop() > topOfElement) {
      $('.article-nav-spotlight-chylers-page').fadeOut();
    } else {
      $('.article-nav-spotlight-chylers-page').fadeIn();
    }
  });

首先检查是否有元素,如果没有元素,则将值设置为 0

如果这是一个问题,因为在调用它之前页面没有完全加载,您可以将代码包装在 document ready 中:

$(document).on('ready', function() {
  var element = $('.references-list-container-outer');
  var topOfElement = element.length ? element.offset().top : 0;

  $(window).scroll(function () {
    if ($(window).scrollTop() > topOfElement) {
      $('.article-nav-spotlight-chylers-page').fadeOut();
    } else {
      $('.article-nav-spotlight-chylers-page').fadeIn();
    }
  });
}

关于javascript - 如何检查此元素是否存在以防止未定义错误的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58995929/

相关文章:

javascript - Jquery数据表: Removing row redirects to first page every time

javascript - 为什么只有部分 JSON 数据而不是全部发送到 DOM?

javascript - 单击事件删除表单中的隐藏值

javascript - 获取从 php 返回到 jquery 的任何 div 及其子元素的 id

javascript - 浏览器调整大小时,Window.innerwidth 不会更新

javascript - Bootstrap Accordion 。保留多个面板的页面加载状态

javascript - D3 模拟在 slider 事件后不起作用

javascript - 使用 jquery 将 JSON 解析为 HTML

javascript - 扩展的垂直 div

jquery - 使用jQuery执行 "does contain"