javascript - 有没有可能的方法来获取滚动位置并且不会出现元素未定义的错误?

标签 javascript angularjs

因此,当我的滚动位置与我想要设置动画的元素的位置相同时,我会触发动画。滚动到某个位置后,我刷新页面并收到错误消息,即我想要设置动画的元素未定义。这是我用于动画的代码:

    angular.element($window).bind("scroll", function() {
       var element = $element.find(".pr-bemax-bodyOfBagger");
       if (this.pageYOffset >= element.offset().top - 400) {
          var myEl = $element.find("#bulldozer-hand");
          myEl[0].classList.add('bulldozer-hand');
       }
    });

附注我不想使用 $timeout。

最佳答案

如果您调用的集合为空,offset 将返回 undefined,但要防止这一事实:

angular.element($window).bind("scroll", function() {
   var element = $element.find(".pr-bemax-bodyOfBagger");
   var offset = element.offset(); // <===
   if (offset && this.pageYOffset >= offset.top - 400) {
   //  ^^^^^^^^^^                    ^^^^^^
      var myEl = $element.find("#bulldozer-hand");
      myEl[0].classList.add('bulldozer-hand');
   }
});

关于javascript - 有没有可能的方法来获取滚动位置并且不会出现元素未定义的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47753851/

相关文章:

javascript - 如何在 JSFiddle 上获取 Facebook Like 按钮?

javascript - 如何在 dat.gui 中添加文件夹?

javascript - 为什么 ng-change 总是从模型传递 'true'

javascript - 在 Controller 范围内调用函数的 Angular 指令

javascript - Angular : ng-model binding not updating when changed with jQuery

javascript - 计算旋转线段的 x、y 坐标以在 Canvas 上绘制

JavaScript 检查表单是否为空

javascript - 更新列表中的项目在点击时显示 - Angular JS

AngularJS 的 javascript 执行顺序

javascript - Typeahead.js 使用数组对象,在每次 onkeyup 时重新加载源