【问题标题】:Javascript (target.className) if element has multiple classnames [duplicate]Javascript(target.className)如果元素有多个类名[重复]
【发布时间】:2020-10-24 17:49:56
【问题描述】:

我的 Javascript 代码有问题,希望有人能帮我解决这个问题。

我为图片创建了一个延迟加载函数。

<script type="text/javascript">
let options = {
  root: null,
  rootMargin: '0px',
  threshold: 0.75
};

let callback = (entries, observer) => {
  entries.forEach(entry => {
    if(entry.isIntersecting && entry.target.className === 'lazy'){
      let imageUrl = entry.target.getAttribute("data-src");
      if(imageUrl){
        entry.target.src = imageUrl;
      }
    }
  });
}

let observer = new IntersectionObserver(callback, options);

lazy = document.querySelectorAll("img.lazy");
for(i=0; i < lazy.length; i++){
  observer.observe(lazy[i]);  
}
</script>

适用于该元素

<img data-src="https://www.example.com/image.jpg" src="" class="lazy"/> 

不适用于该元素

<img data-src="https://www.example.com/image.jpg" src="" class="test lazy"/>

这两个元素之间的区别是一个有一个额外的类 test

如何在我的 Javascript 代码中解决这个问题?

【问题讨论】:

标签: javascript lazy-evaluation


【解决方案1】:

使用 entry.target.classList.contains('lazy') 代替 entry.target.className === 'lazy'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 2019-08-27
    • 1970-01-01
    相关资源
    最近更新 更多