Javascript: 如何循环遍历文档,改几个字?

Javascript: How to loop through document and change a few words?

我这样做只是为了了解一下 Firefox 插件和 Javascript。我是 Javascript 和 FF 插件的新手。我已经用谷歌搜索了 2 个小时,阅读了大约 30 个关于该主题的不同页面,但没有一个页面真正符合我正在尝试做的事情。如果您没有猜到,我通过查看代码学习得最好。

未使用 Jquery,仅使用原始 Javascript。我可能稍后会到达 Jquery,但不是现在。

我想遍历网页上的某些元素,例如 a、p、div,并更改其显示的 html (.innerHTML ).但我有问题。这是我的代码。

// Change the text in these elements.
var eleArr=['a', 'p', 'h1', 'h2', 'blockquote', 'div', 'td', 'li'];
var fromArr=['men', 'man', 'Men', 'Man', 'guy', 'guys', 'girl', 'Girl'];
var toArr=['Blues', 'Blue', 'Blues', 'Blue', 'blue', 'blues', 'pink', 'pink'];
var i;

console.log("Starting, eleArr.length="+eleArr.length);

// First loop through every element to check for string in fromArr[].
for (i=0; i < eleArr.length; i++)
  {
  //console.log("Checking element "+eleArr[i]);
  test1(eleArr[i]); // Process one element at a time.
  }


////////////////////////////////////////////////////////////////
function test1(mytag)
{
var elements = document.getElementsByTagName(mytag);
var i, j;

console.log("Test1: Checking element '"+mytag+"'");

for (i=0; i<elements.length; i++) // Loop through all elements with mytag.
  {
    // Loop through fromArr[] here.
    for (j=0; j<fromArr.length; j++)
      {
      var s=fromArr[j];
      var re=/s/ig; // Creates regex object.
      var ele=elements[i];
      var oldhtml=ele.innerHTML;
      if (oldhtml.indexOf(fromArr[j]) >= 0)
        {
          console.log("TEST1: Found: "+fromArr[j]+" in ele '"+mytag+"': "+oldhtml);
        oldhtml.replace(re, toArr[j]);
        ele.innerHTML=oldhtml;
          console.log("TEST1: Replaced with: "+oldhtml)
        }
      }
  }
}

它找到的第一个元素是一个元素,但它在 ele.innerHTML 中有大量的子元素。如何只抓取显示的 HTML 文本?抓取第一个元素的示例。

<div>
<p class="parent"></p>
<a href="http://www.some.com">some link</a>. 
</div>

从技术上讲,该元素没有任何可显示的文本可供更改。但是 'a' 锚元素确实有要查看的文本 'some link'.

我在这里做错了什么?

谢谢。

我在这里找到了答案。问题是我如何处理这些元素。

http://commons.oreilly.com/wiki/index.php/Greasemonkey_Hacks/Beautifying_the_Web#Straighten_Smart_Quotes

现在我有了执行此操作的基本方法,但我遇到了另一个问题。当我将 'man' 更改为 'blue' 时,我只想更改整个单词,但它不起作用。我不确定执行此操作的正则表达式是什么。

输入:很多人都很有礼貌。

当前输出:Bluey a blue 有很好的 blueners blue。

预期输出:许多蓝色都有良好的举止。

备注: