改成這樣你應該就能看到123有印出來了,剩下自己寫。
function addDemo(){
if(contain.scrollHeight - contain.scrollTop === contain.clientHeight){
console.log('123')
// demo.appendChild(str);
}
}
https://codepen.io/ted59438/pen/MWvopYG?editors=1111
dom.insertAdjacentHTML('beforeend', str)
let demo = document.querySelector('.demo');
let contain = document.querySelector('#contain');
let str = `<div class="demo">Lorem ipsum dolor sit amet consectetur.</div>`;
function addDemo() {
let documentElement = document.documentElement
console.log(contain.scrollTop)
console.log(documentElement.scrollTop)
if (documentElement.scrollTop + 10 >= documentElement.scrollHeight - documentElement.clientHeight) {
console.log('123')
for (let i = 0; i < 20; i++) {
contain.insertAdjacentHTML('beforeend', str)
}
}
}
window.addEventListener('scroll', addDemo);
您好~我使用了個的範例為了便於觀察新增的區塊,我把新增的區塊加上紅色樣式,但是感覺很奇怪的是,當往下滾動到快底部時為什麼新增的區塊不是從最後一個 HTML 節點長出來,而是好像從頂部長出來呢?
AWEI 改成加在 contain 就可以了~
因為原本你的程式碼是加在第一個 demo 元素底下造成的。
contain.insertAdjacentHTML('beforeend', str)
不是從底部新增元素的原因:
因為document.querySelector('.demo')
抓到的是第一個.demo
元素,但是這次不會用到這一句。
試試看下方的程式碼吧,這應該就是你想要的結果!
let container = document.querySelector('#contain');
let str = '<div class="demo red">Lorem ipsum dolor sit amet consectetur.</div>';
window.addEventListener('scroll', addDemo);
function addDemo() {
/* 不是底部則跳出函式 */
if (window.pageYOffset + window.innerHeight < document.documentElement.offsetHeight) return;
for (let i = 0; i < 5; i++) {
container.insertAdjacentHTML('beforeend', str)
}
}