Javascript从孩子中的孩子获取文本

克拉克佛罗里达州

我正在忙于开发一个 wordpress 插件来查找数字并通过格式化数字并将其替换为 0000 来隐藏它们,例如:

<a href="tel:0000000000">
   <span>
      <span>0000 000 000</span>
   </span>
</a>

我有查询<a href="">标签的javascript 然后我得到 a 标签的孩子。然而,我的问题是,因为我不知道生病的孩子是什么或有多少,我不能假设它是 1 或 2,因此我必须预测并寻找它。

Javascript代码:

// REMOVE SPACES IN STRING
let replaceStr = function (self) {
    let value = self.replace(/[- )(]/g, '')
    return value
};
// REMOVE LETTERS FROM STRING 
let rmLetters = function (self) {
    // let value = self.replace( /^\D+/g, '')
    let value = self.replace(/\D+%?/g, "");
    return value
}

let a = document.querySelectorAll("a[href^='tel:'], a[href^='Tel:'], a[href^='callto:']");
for (var i = 0; i < a.length; i++) {
    let hrefSlice = a[i].href.slice(4);
    let countChildren = a[i].childElementCount
    if (a[i].hasChildNodes()) {
        let a_childNodes = a[i].children;
        if (a_childNodes.length > 1) { 
            for (let l = 0; l < a_childNodes.length; l++) {
                if (replaceStr(a_childNodes[l].textContent) === hrefSlice) {
                    a_childNodes[l].textContent = replaceStr(a_childNodes[l].textContent).slice(0, 4) +
                            "...Click Here";
                } else if (replaceStr(rmLetters(a_childNodes[l].textContent)) === hrefSlice) {
                    a_childNodes[l].textContent = replaceStr(rmLetters(a_childNodes[l].textContent)).slice(
                            0, 4) + "...Click Here";
                    }
                }
            }
        }
    }
}
  
风控

不确定我是否理解正确,但我会这样做:

document.querySelector('#hideButton').addEventListener('click', () => {
  const phoneAnchors = document.querySelectorAll('a[href^="tel:"], a[href^="Tel:"], a[href^="callto:"]');
  
  phoneAnchors.forEach((phoneAnchor) => {
    const phoneNumber = phoneAnchor.href.split(':')[1] || '';
    
    phoneAnchor.href = phoneAnchor.href.replace(/[0-9]/g, '0');
    
    phoneAnchor.querySelectorAll('*').forEach(childNode => {
      if (childNode.textContent.replace(/[ ]/g, '') === phoneNumber) {
        childNode.textContent = childNode.textContent.replace(/[0-9]/g, '0');
      }
    });
  });
});
a {
  display: block;
}
<a href="tel:1234567890">
  <span>
    <span>1234 567 890</span>
  </span>
</a>

<a href="tel:0987654321">
  <span>
    <span>0987 654 321</span>
  </span>
</a>

<a href="tel:1122334455">
  <span>
    <span>1122334455</span>
  </span>
</a>

<hr>

<button id="hideButton">Hide Phone Numbers</button>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章