为了账号安全,请及时绑定邮箱和手机立即绑定

将 jQuery forEach 函数转换为 JavaScript?

将 jQuery forEach 函数转换为 JavaScript?

HUX布斯 2021-06-29 08:19:50
我的任务是将 jQuery 函数转换为纯 JavaScript。该函数用于检查元素是否在视口内。如果它在视口内,则使用 data-bglazy 属性并使用该属性的值向该元素添加背景图像样式。需要转换的函数是:$.fn.isInViewport = function() {    var elementTop = $(this).offset().top;    var elementBottom = elementTop + $(this).outerHeight();    var viewportTop = $(window).scrollTop();    var viewportBottom = viewportTop + $(window).height();    return elementBottom > viewportTop && elementTop < viewportBottom;  }; $(window).on('resize scroll', function() {    $('.bgLazy').each(function() {      if ($(this).isInViewport()) {        var lazyImg = $(this).attr('data-bglazy');        $(this).css('background-image', 'url(' + lazyImg + ')');      }    });  });目前我在尝试将上述函数转换为 JavaScript 时所拥有的:function isInViewport(el){    var elementTop = el.offsetTop;    var elementBottom = elementTop + el.offsetHeight;    var viewportTop = window.scrollTop;    var viewportBottom = viewportTop + window.offsetHeight;    return elementBottom > viewportTop && elementTop < viewportBottom;  };    var bgElements = document.querySelectorAll('.bgLazy');    bgElements.forEach(bgElementLoop);    function bgElementLoop(item, index) {      if(item.isInViewport()){        var lazyImg = item.getAttribute('data-bglazy');        item.style.backgroundImage = 'url(' + lazyImg + ')';      }    }    window.addEventListener("resize, scroll", bgElementLoop);我试图弄清楚在尝试将 jQuery 函数转换为 JavaScript 时我搞砸了哪一部分编辑:在阅读了一些评论后,我对视图进行了更改。isInViewport 函数没有改变,但我所做的改变如下:    var bgElements = Array.prototype.slice.call(document.querySelectorAll('.bgLazy'));    bgElements.forEach(bgElementLoop);    function bgElementLoop(item, index) {      if(item.isInViewport(item)){        var lazyImg = item.getAttribute('data-bglazy');        item.style.backgroundImage = 'url(' + lazyImg + ')';      }    }    window.addEventListener("resize", bgElementLoop);    window.addEventListener("scroll", bgElementLoop);
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 120 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信