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