如何在if语句中实现:.page-title含Welcome时为.example加excluded类
问题修正方案
嘿,你的代码里有两个关键问题导致没生效,咱们来一一解决:
问题1:错误的条件判断逻辑
你直接把".page-title:contains('Welcome')"作为if的判断条件,在JavaScript里非空字符串永远会被判定为true——不管页面里有没有匹配的元素,这个条件都会成立。正确的做法是用jQuery检查匹配到的元素数量是否大于0,以此判断元素是否存在且包含目标文本。
问题2:混用原生JS和jQuery方法
document.getElementsByClassName("example")是原生JavaScript的方法,它返回的是一个HTML集合,并没有jQuery专属的.addClass()方法。你要么全程用jQuery的语法,要么用原生JS的方式添加类。
修正后的jQuery版本代码
<script> $(document).ready(function(){ // 先判断是否存在包含Welcome文本的.page-title元素 if($(".page-title:contains('Welcome')").length > 0){ // 用jQuery选择器选中.example元素,调用addClass方法 $(".example").addClass("excluded"); } }); </script>
原生JavaScript替代版本(无需依赖jQuery)
如果你不想用jQuery,也可以用纯原生JS实现需求:
<script> document.addEventListener('DOMContentLoaded', function(){ // 获取所有.page-title元素,检查是否有包含Welcome文本的 const pageTitles = document.querySelectorAll('.page-title'); let hasWelcome = false; pageTitles.forEach(title => { if(title.textContent.includes('Welcome')){ hasWelcome = true; } }); if(hasWelcome){ // 获取所有.example元素,逐个添加excluded类 const examples = document.querySelectorAll('.example'); examples.forEach(el => { el.classList.add('excluded'); }); } }); </script>
内容的提问来源于stack exchange,提问作者Jesper Heller Hansen
相关产品推荐
相关产品推荐

