纯js鼠标滚动时候动态加载新页面数据

本文介绍了一种网页中常见的无限滚动加载技术的实现方法,通过jQuery和纯JavaScript两种方式展示了如何在用户滚动到页面底部时自动加载更多内容。该技术常用于论坛、社交媒体等需要连续展示大量信息的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// jQuery我们可以这样使用
$(window).scroll(function(){
  if ($(window).scrollTop() == $(document).height() - $(window).height()){
     page++;
     loadPage(page);
  }
});

 

//纯js我们可以这样做
window.onscroll = function() {
      var scrollTop = document.body.scrollTop;
      var offsetHeight = document.body.offsetHeight;
      var scrollHeight = document.body.scrollHeight;
      if (scrollTop == scrollHeight - offsetHeight) {
        page++;
        loadList(page);
      }
    };


function loadList(page) {
      page = page || 1;

      if (isLoad) {
        getJSON('/forum.php?mod=hot&page=' + page).then(function(data) {
          if (data.code == 200) {
            data = data.data;
            if (data && Object.keys(data).length > 0) {
              for (var k in data) {
                var v = data[k];
                detailTemplate = detailTemplate.cloneNode(true);
                var userInfoObj = detailTemplate.getElementsByClassName('user-info')[0];
                userInfoObj.getElementsByClassName('name')[0].innerText = v.author;
                userInfoObj.getElementsByClassName('avatar')[0].src = v.avatar;
                userInfoObj.getElementsByClassName('post-time')[0].innerHTML = v.lastpost;
                detailTemplate.getElementsByClassName('title')[0].innerText = v.subject;
                detailTemplate.getElementsByClassName('desc')[0].innerText = v.subject;
                var extInfoObj = detailTemplate.getElementsByClassName('ext-info')[0];
                extInfoObj.getElementsByClassName('from')[0].innerText = v.fname;
                extInfoObj.getElementsByClassName('view-time')[0].innerText = v.views;
                postListObj.appendChild(detailTemplate);
              }
            } else {
              isLoad = false;
            }
          } else {
            isLoad = false;
          }
        }, function(status) {
          console.log('Something went wrong, status is ' + status);
        });
      }
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值