Javascript:如何循环浏览文档并更改几个单词?

Javascript:如何循环浏览文档并更改几个单词?,javascript,html,firefox-addon,Javascript,Html,Firefox Addon,我这样做只是为了了解一些Firefox插件和Javascript。我不熟悉Javascript和FF插件。我已经在谷歌上搜索了2个小时,阅读了大约30页关于这个主题的不同页面,但没有一页真正符合我的意图。若你们并没有猜到,我通过看代码学习的最好 不使用Jquery,只使用原始Javascript。我可能稍后再去Jquery,但现在不行 我想循环浏览网页上的某些元素,如a、p、div,并更改它们显示的html(.innerHTML)中的任何单词。但我有问题。这是我的密码 // Change the

我这样做只是为了了解一些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)
        }
      }
  }
}
//更改这些元素中的文本。
变量eleArr=['a','p','h1','h2','blockquote','div','td','li'];
var fromArr=[“男人”、“男人”、“男人”、“男人”、“男人”、“男人”、“男人”、“女孩”、“女孩”];
var toArr=[‘蓝色’、‘蓝色’、‘蓝色’、‘蓝色’、‘蓝色’、‘粉色’、‘粉色’];
var i;
console.log(“开始,eleArr.length=“+eleArr.length”);
//首先遍历每个元素以检查fromArr[]中的字符串。
对于(i=0;i对于(i=0;i我在这里找到了答案。问题是我是如何处理元素的

现在我有了基本的方法,我有了另一个问题。当我把“man”改成“blue”时,我只想把整个单词改一下,但它不起作用。我不确定正则表达式会怎么做

输入:很多男人都有礼貌

当前输出:蓝色a蓝色具有良好的蓝色

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

注:

  • 为什么不像看上去那么容易

我建议使用递归函数传递
元素[I]
如果它通过了测试,你似乎找到了一个解决方案,但我会这样做:谢谢。我运行了你的测试。但是将链接文本更改为“男人有礼貌”,结果是“蓝色有好的蓝色者”。我只想更改整个单词,而不是包含“男人”和其他文本的单词。知道如何修复吗?我一直在玩一些我认为有一种更有效的方法,使用DomtreWalker:如果你还有其他问题,你应该问()这是一个单独的问题。但是,对于特定的正则表达式,您可能需要尝试类似于
/\bman\b/
的方法,因为
\b
是用于指示单词边界的。
<div>
<p class="parent"></p>
<a href="http://www.some.com">some link</a>. 
</div>