const scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop; console.log(scrollTop);以上代码在获取页面滚动高度,打印不出来数据,为什么
时间: 2023-08-19 12:22:39 浏览: 92
可能是因为在代码执行时,页面还没有滚动,因此获取到的滚动高度为0,导致打印不出来数据。如果需要在页面滚动时动态获取滚动高度并打印出来,可以将代码放在滚动事件监听函数中。例如:
```
window.addEventListener('scroll', function() {
const scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
console.log(scrollTop);
});
```
这样,每次滚动页面时都会触发滚动事件监听函数,从而动态获取滚动高度并打印出来。
相关问题
分析代码: // 滑动滚动条 - 实现自动加载 scrollTo() { // 滚动视口高度(也就是当前元素的真实高度) let scrollHeight = document.documentElement.scrollHeight || document.body.scrollHeight; // 可见区域高度 let clientHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; // 滚动条顶部到浏览器顶部高度 let scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop; // console.log (clientHeight); // console.log (scrollTop); // console.log (scrollHeight); if (clientHeight + scrollTop + 1 >= scrollHeight) { // 如果数据量超过30就停止继续加载 console.log('滚动条触底了'); console.log(this.$store.getters.getStoreCount); console.log(this.$store.getters.getStoreCount >= 30); if (this.$store.getters.getStoreCount >= 30) { window.removeEventListener('scroll', scrollTo); console.log('-------------------'); console.log('执行了移除加载事件'); } else { // 一秒后执行 const loading = this.$loading({ lock: true, text: 'Loading', }); setTimeout(() => { this.load(); loading.close(); }, 1000); } } },
这是一个 Vue.js 组件中的 `scrollTo` 方法,用于实现滚动条自动加载更多数据的功能。具体来说:
1. 首先,该方法获取了滚动视口高度、可见区域高度和滚动条顶部到浏览器顶部的高度,以便判断是否已经滚动到页面底部。
2. 如果滚动到页面底部,该方法会检查数据量是否已经超过 30 条。如果已经超过了,就移除滚动事件监听器;否则,就在 1 秒后执行 `load` 方法来加载更多数据。
3. 在加载数据的过程中,该方法会显示一个加载提示,并在加载完成后关闭它。
4. 在方法中,使用了 `window.removeEventListener` 来移除滚动事件监听器,但是要注意的是,这里应该传入 `this.scrollTo` 而不是 `scrollTo`,因为 `scrollTo` 是方法名,而 `this.scrollTo` 才是方法本身。
解释代码:<script> import navBar from '@/components/NavBar' import swiper from '@/components/Swiper' import { getHome } from '../service/home' import { getUserInfo } from '../service/user' import { getLocal } from '@/common/js/utils' import { Toast } from 'vant' import axios from '../utils/axios' export default { name: 'home', data() { return { swiperList: [], isLogin: false, headerScroll: false, hots: [], newGoodses: [], recommends: [], categoryList: [ { name: '楼楼交友', imgUrl: '//s.yezgea02.com/1598679532890/jiaoyou.png', categoryId: 100001 }, { name: '楼楼家政', imgUrl: '//s.yezgea02.com/1598679532890/jiazheng.png', categoryId: 100003 }, { name: '楼楼水产', imgUrl: '//s.yezgea02.com/1598679734813/shuichan1.png', categoryId: 100002 }, { name: '楼楼租车', imgUrl: '//s.yezgea02.com/1598679532890/zuche.png', categoryId: 100004 }, { name: '楼楼招聘', imgUrl: '//s.yezgea02.com/1598679792590/pin.png', categoryId: 100005 }, { name: '楼楼二手', imgUrl: '//s.yezgea02.com/1598679853415/ershou.png', categoryId: 100006 }, { name: '楼楼宠物', imgUrl: '//s.yezgea02.com/1598679532890/chongwu.png', categoryId: 100007 }, { name: '楼楼外卖', imgUrl: '//s.yezgea02.com/1598679905787/wm.png', categoryId: 100008 }, { name: '楼楼电器', imgUrl: '//s.yezgea02.com/1598680199443/dianqi.png', categoryId: 100009 }, { name: '楼楼充值', imgUrl: '//s.yezgea02.com/1598680264015/czcz.png', categoryId: 1000010 } ], } }, components: { navBar, swiper }, async mounted() { const token = getLocal('token') if (token) { this.isLogin = true } window.addEventListener('scroll', this.pageScroll) Toast.loading({ message: '加载中...', forbidClick: true }); const { data } = await getHome() this.swiperList = data.carousels this.newGoodses = data.newGoodses this.hots = data.hotGoodses this.recommends = data.recommendGoodses Toast.clear() }, methods: { pageScroll() { let scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop scrollTop > 100 ? this.headerScroll = true : this.headerScroll = false }, goToDetail(item) { this.$router.push({ path: `product/${item.goodsId}` }) } } } </script>
这是一个 Vue.js 组件的代码,其中包含了导入组件、导入服务、导入工具函数、导入第三方库等等。组件的名称是 home,其中包含了一些数据和方法,如轮播图列表、是否登录、是否滚动等等。在 mounted 生命周期中,会调用 getHome() 函数获取首页数据,并将获取到的数据赋值给组件的数据。在 methods 中,还包含了一个 goToDetail() 方法,用于跳转到商品详情页。
阅读全文