判断指定div含特定文本时给另一div加类的异常问题排查
问题原因
你的代码中b.includes("Verhuurd")仅执行了匹配判断,返回的布尔值没有被if条件语句包裹,所以后续添加displaynone类的代码是无条件执行的,和匹配结果无关,自然就会出现不管文本是不是Verhuurd都会隐藏表单的问题。
修正后的JS代码
window.addEventListener("load", () => { // 先校验目标元素是否存在,避免元素不存在时抛出JS错误 const propertyItem = document.querySelector('.aw-property-data-item'); const formCont = document.querySelector('.nf-form-cont'); if (propertyItem && formCont) { // 用textContent读取文本比innerHTML更准确,避免HTML标签内容干扰匹配 const itemText = propertyItem.textContent.trim(); // 仅当匹配到指定文本时才添加隐藏类 if (itemText.includes("Verhuurd")) { formCont.classList.add("displaynone"); } } });
优化说明
- 用
textContent替代innerHTML读取文本,可避免标签属性、HTML注释等内容意外匹配到目标文本,判断逻辑更严谨 - 增加元素存在性校验,避免页面没有对应元素时控制台报错
- 新增
trim()去除文本前后多余空格,减少空格导致的匹配失败概率
内容的提问来源于stack exchange,提问作者ErwinV
相关产品推荐
相关产品推荐

