当页面'premium'出现10次时为指定div添加类的JS实现求助
实现需求
- 触发规则:页面所有
.listing-package容器内,单词premium累计出现满10次 - 执行动作:为
.submit-post元素添加disabled类 - 现存问题:原有代码只要检测到任意一个
.listing-package内存在premium就直接添加类,未做次数累计判断,不符合预期
原有错误代码
$(document).ready(function() { document.querySelectorAll('.listing-package').forEach(el=> { if (/premium/.test(el.textContent) ) { document.querySelector(".submit-post").classList.add("disabled") } }) })
修复后代码
$(document).ready(function() { // 初始化premium出现次数计数器 let premiumTotal = 0; // 遍历所有.listing-package容器 document.querySelectorAll('.listing-package').forEach(el => { // 全局匹配当前容器内所有premium关键词,加i可忽略大小写,不需要可删除 const matches = el.textContent.match(/premium/g); if (matches) { // 将当前容器内匹配到的次数累加到总计数 premiumTotal += matches.length; } }) // 仅当累计次数达到10次时,才添加目标类名 if (premiumTotal >= 10) { document.querySelector(".submit-post").classList.add("disabled"); } })
可选调整
如果需要严格匹配独立的premium单词,避免匹配到类似premiumplan这类包含该字符串的其他词汇,可以将匹配正则替换为/\bpremium\b/g即可。
内容的提问来源于stack exchange,提问作者E4TSteve
相关产品推荐
相关产品推荐

