亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 querySelectorAll 的 Intersection Observer 引發

使用 querySelectorAll 的 Intersection Observer 引發

飲歌長嘯 2022-06-16 10:08:33
我陷入了交叉路口觀察者問題。使用document.querySelectorAll('.entry')會引發 TypeError:“未捕獲的 TypeError:無法在 'IntersectionObserver' 上執行 'observe':參數 1 不是 'Element' 類型?!备膁ocument.querySelectorAll('.entry');為document.querySelector('.entry');解決問題并且有效。我究竟做錯了什么?基本的 HTML 結構:<html><body>  <div id="content-container">    <div class="content">      <div class="entry">Some content here on each entry</div>      <div class="entry"></div>      <div class="entry"></div>      <div class="entry"></div>      <div class="entry"></div>      <div class="entry"></div>    </div></div></body</html>JavaScript:const blog = document.querySelectorAll('.entry');const options = {  root: null,  rootMargin: '0px',};const observer = new IntersectionObserver(function(entries, observer) {  entries.forEach((entry) => {    if (!entry.isIntersecting) {      return;    }     else {      console.log(entry);    }  });}, options);observer.observe(blog);
查看完整描述

1 回答

?
翻過高山走不出你

TA貢獻1875條經驗 獲得超3個贊

發生此問題是因為IntersectionObserver.observe()只能觀察一個targetElement,但使用document.querySelectorAll()您傳遞的 NodeList 表示與指定選擇器組匹配的文檔元素列表。因此,您遇到了問題,但document.querySelector()只為您提供了第一個匹配的元素,因此當您使用它時沒有問題。


您可以通過遍歷列表中的所有元素并單獨觀察每個元素來解決此問題,例如:


const blogs = document.querySelectorAll('.entry');

blogs.forEach(blog => observer.observe(blog));


查看完整回答
反對 回復 2022-06-16
  • 1 回答
  • 0 關注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號