更改 JavaScript 中网页文本的背景颜色(当元素 ID 或名称不可用时)

Changing the background color of text on a webpage in JavaScript (when element ID or name isn't available)

我想要实现的是,一旦加载了网页,在其中找到一些文本并突出显示文本。到目前为止,我编写的代码如下。

首先我使用正则表达式匹配 textContent (我为什么使用这种方法是因为我没有 textContent 所在的 div 的 ID 或名称,因此,我不能选择 getElementsByName()getElementById()).为了检查文本是否存在,我首先比较它的长度,然后继续突出显示它。

我找到的文本位于 text 变量的索引 0 处。我无法访问 backgroundColor() 方法,这就是为什么它现在被注释掉的原因。我可以访问 fontcolor(),但即使它似乎也不起作用。

我是 JS 的新手,所以我将不胜感激。

(function highlightText(){ 
   let text = document.body.textContent.match(/abcxyz/);
   if (text[0].length == 6)
   {
      text[0].fontcolor('yellow');
      //text[0].backgroundColor('yellow');
      console.log(text[0]);                //prints abcxyz
      return text[0];
   }
   return null;
})()

解决方案: 该方法基于@forlen 提供的解决方案:

我所做的是遍历所有节点,如果 textContent 与正则表达式匹配,然后将它们推入一个数组,据我所知,我想要的是根元素,所以我得到了最后一个元素数组并更改其 backgroundColor.

    (function highlightText() {
        let allNodes = document.body.getElementsByTagName("*");
    
        var arr= [];
        for (let node of allNodes) {
           if (node.textContent.match(/abcxyz/)) {
               arr.push(node);
           }
        }
    
        text = arr[(arr.length)-2];
        text.style.backgroundColor = "yellow";
    })();

我建议遍历正文中的所有节点并像这样更改样式:

(function highlightText() {
        let allNodes = document.body.getElementsByTagName("*");

        for (let node of allNodes) {
           if (node.textContent === "abcxyz") {
              node.style.color = "yellow";
           }
        }
     })();