scrollTop + clientHeight = scrollHeight
(function ($) {
var htmlItem = "<li class='category-item'>" + "<img class='item-icon' src=$url />" + "<p class='item-name'>$name</p>" + "</li>";
function getHead() {
$.ajax({
url: "../../JS/json/head.json",
dataType: "json",
type: "get",
success: function (data) {
if (data.msg === "成功") {
console.log(data)
var itemlist = ""
var data = data.data.primary_filter.splice(0, 10);
data.forEach((item, index) => {
var str = htmlItem
.replace("$url", item.url)
.replace("$name", item.name)
itemlist += str
});
console.log(itemlist)
$(".category").append($(itemlist))
}
}
})
}
getHead()
var homelist = "<li class='homelist-item'><img class='homelist-item-img' src=$url />" +
"<div class='word'>" +
"<h3 class='word-title'>$title</h3>" +
"<div class='word-discrpt'><div class='word-discrpt-l'><div class='word-star'>评分:$star</div><div class='word-sales'>月销:$sales</div></div><div class='word-distance'>$time | $distance</div></div>" +
"<div class='word-money'>$money</div>" +
"<ul class='word-active'>$active</ul>" +
"</div>" +
"</li>"
var discounts = "<li class='word-active-item'><img class='word-active-img' src=$icon_url /><p class='word-active-info'>$info</p>"
var page = 0;
var isLoading = false
function getList() {
page = page + 1;
isLoading = true;
$.ajax({
url: "../../JS/json/homelist.json",
dataType: "json",
type: "get",
success: function (data) {
if (data.msg === "成功") {
console.log(data)
var itemlist = ""
var data = data.data.poilist || []
data.forEach((item, index) => {
if (item.month_sale_num >= 1000) {
var sale_num = "999+"
} else {
sale_num = item.month_sale_num
}
var active = ""
item.discounts2.forEach((i, j) => {
var src = discounts
.replace("$icon_url", i.icon_url)
.replace("$info", i.info)
active += src
})
var str = homelist
.replace("$url", item.pic_url)
.replace("$title", item.name)
.replace("$star", item.wm_poi_score)
.replace("$sales", sale_num)
.replace("$time", item.mt_delivery_time)
.replace("$distance", item.distance)
.replace("$money", item.min_price_tip)
.replace("$active", active)
itemlist += str
});
/* console.log(itemlist) */
$(".list").append($(itemlist))
isLoading = false
}
}
})
}
getList()
var clientHeight = document.documentElement.offsetHeight;
function addEvent() {
window.addEventListener('scroll', function () {
var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
var scrollHeight = document.body.scrollHeight;
var proDis = 0;
console.log(scrollTop + "+" + clientHeight + "=" + (scrollTop + clientHeight) + ">=" + (scrollHeight - proDis))
if ((scrollTop + clientHeight) >= (scrollHeight - proDis)) {
if (page < 4) {
if (isLoading) {
return;
}
getList()
}
}
})
}
addEvent()
})(jQuery)scrollTop + clientHeight = scrollHeight
按道理来说,scrollTop + clientHeight 应该等于 scrollHeight,为什么我把页面拉到最下面,scrollTop + clientHeight 比 scrollHeight还要小1000多,是什么原因呢?跟rem的设置有关系吗?
还有,我如果把var clientHeight = document.documentElement.offsetHeight;放到scroll事件内来声明的话,他的值就和body的高一摸一样,放在外面的就是对的,这是什么情况呢
正在回答 回答被采纳积分+1
同学你好,
1、获取浏览器视口高度用的属性错误,应该是clientHeight,如下:

offsetWidth是获取页面高度的,document.body.scrollHeight和document.documentElement.offsetHeight一样,按照上面修改之后判断就没有问题了。
2、document.documentElement.offsetHeight;放到scroll事件外内声明值不一样的原因:
因为ajax是异步操作,将获取页面高度放在scroll事件外面,数据还没有加载到页面中就获取了,只是一部分高度,不是全部的。将获取页面高度放在scroll事件里面,数据加载进来了再获取就是页面的高度了。
自己可以测试理解下,祝学习愉快!
欢迎采纳~
- 参与学习 人
- 提交作业 622 份
- 解答问题 6815 个
微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星