下拉加载更多

本文深入探讨了网页中无限滚动加载技术的实现细节,包括如何通过JavaScript监听滚动位置,判断是否触底并触发数据加载,以及如何处理数据加载过程中的各种情况。文章还提到了在数据不足填充页面时的解决方案。

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

<script type="text/javascript">
(function(window) {
	var i = 2;
	var moreData=true;
	// 获取当前滚动条的位置 
    function getScrollTop() { 
	    var scrollTop = 0; 
	    if (document.documentElement && document.documentElement.scrollTop) { 
	    	scrollTop = document.documentElement.scrollTop; 
	    } else if (document.body) { 
	    	scrollTop = document.body.scrollTop; 
	    } 
	    return scrollTop; 
    } 
    // 获取当前可视范围的高度 
    function getClientHeight() { 
	    var clientHeight = 0; 
	    if (document.body.clientHeight && document.documentElement.clientHeight) { 
	    	clientHeight = Math.min(document.body.clientHeight, document.documentElement.clientHeight); 
	    } 
	    else { 
	    	clientHeight = Math.max(document.body.clientHeight, document.documentElement.clientHeight); 
	    } 
	    return clientHeight; 
    }
    // 获取文档完整的高度 
    function getScrollHeight() { 
    	return Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); 
    }
    var _text = document.querySelector('.refreshText'),
    _container = document.getElementById('refreshContainer');
    var throttle = function(method, context){
		  clearTimeout(method.tId);
		  method.tId = setTimeout(function(){
		    method.call(context);
		  }, 300);
	}
    function fetchData() {
    	setTimeout(function() {
    		_container.insertAdjacentHTML('beforeend', '<li>new add...</li>');
    	}, 1000);
    }
    window.onscroll = function() {
    	if(moreData){
			if (getScrollTop() + getClientHeight() >= getScrollHeight()) {
				_text.innerText = '加载中...';
				// throttle(fetchData);
				$.ajax({
					type: 'POST',
					// dataType: 'JSON',
					url: '${path}/', //服务路径
					data: {
						page:i
					},
					success: function (res) {
						console.log("res---" + JSON.stringify(res))
						if (res == "") {
							console.log("data is null");
							_text.innerText = '';
							moreData = false;
						} else {
							_container.insertAdjacentHTML('beforeend', res);
							i++;
						}
					},
					error: function () {
						$(this).removeAttr("disabled");
						alert("换卡异常失败!");
					}
				});

			}
		}
    };
})(window);
</script>

有时候 会出现放10条数据下拉无响应的情况,因为10条数据没有把页面铺满.触底事件无法执行.可让一页显示20条数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值