我一直面临以下代码星星标记选项的错误,但它是我的项目的最后一次运行执行,但实际上今天它显示“未能执行'observer'on' IntersectionObserver ':参数1的类型不是“元素”。”。
const counters = document.querySelectorAll(".counter");
function playCounter() {
counters.forEach((counter) => {
counter.innerText = 0;
let point = +counter.dataset.count;
let step = point / 100;
let startCount = function () {
let displayCount = +counter.innerText;
if (displayCount < point) {
counter.innerText = Math.ceil(displayCount + step);
setTimeout(startCount, 500);
} else {
counter.innerText = point;
}
};
startCount();
});
}
let counterSection = document.querySelector(".counter_wrapper");
let scope = {
borderMargin: "0px 0px -200px 0px",
};
const sectionObserver = new IntersectionObserver(function (entry) {
if (entry[0].isIntersecting) {
playCounter();
}
}, scope);
**sectionObserver.observe(counterSection);**
1条答案
按热度按时间z3yyvxxp1#
实际上,由于
document.querySelector
在元素不存在的情况下会返回null
,而element
传递给sectionObserver.observe()
时,如果element
是null
,就会抛出上面的异常Failed to execute 'observe' on 'IntersectionObserver': parameter 1 is not of type 'Element'
,所以请确保document.querySelector
选择的元素必须存在。也许你可以看看这个链接。Uncaught TypeError: Failed to execute 'observe' on 'IntersectionObserver': parameter 1 is not of type 'Element'