如何检测DOM元素上的指定CSS类并获取对应类名完成移除操作?
问题排查
你现有代码的检测逻辑存在错误:JS 中的||逻辑或运算符会返回第一个真值的表达式结果,因此promo || transaction || newsletter || landingPage实际只会返回promo的取值,你当前的代码本质上仅检测了元素是否存在projectPromoActivateMobile这一个类,并没有覆盖数组内的全部目标类。
实现代码
你可以通过遍历预定义的目标类数组,匹配到元素上实际存在的类名,示例如下:
var el = document.querySelector('.main-content'); const promo = 'projectPromoActivateMobile'; const transaction = 'projectTransactionActivate'; const newsletter = 'projectNewsletterActivate'; // 已清理原变量值末尾多余空格,避免匹配失败 const landingPage = 'projectLandingPageActivate'; const targetClasses = [promo, transaction, newsletter, landingPage] // 查找第一个匹配的类,需要匹配所有存在的类可替换为filter const matchedClass = targetClasses.find(className => el.classList.contains(className)); if (matchedClass) { console.log('检测到目标类:', matchedClass); // 移除匹配到的类 el.classList.remove(matchedClass); } else { console.log('未检测到任何目标类'); }
注意事项
- 如果元素可能同时存在多个目标类,将
find方法替换为filter,会返回所有匹配类名组成的数组,遍历数组执行移除操作即可 - 类名匹配为精确匹配,需注意目标类名不要有多余的空格、大小写错误等问题
内容的提问来源于stack exchange,提问作者user14868233
相关产品推荐
相关产品推荐

