jquery 无法在“交叉点观察器”上执行“观察”:参数1不是“Element”类型

z9gpfhce  于 2023-01-30  发布在  jQuery
关注(0)|答案(1)|浏览(531)

我一直面临以下代码星星标记选项的错误,但它是我的项目的最后一次运行执行,但实际上今天它显示“未能执行'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);**
z3yyvxxp

z3yyvxxp1#

实际上,由于document.querySelector在元素不存在的情况下会返回null,而element传递给sectionObserver.observe()时,如果elementnull,就会抛出上面的异常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'

相关问题