我想找到并计算“#34; Dog"在HTML页面的文本中,然后使用前面的#更新单词:
原文:
The dog chased the cat. The cat killed the dog.
修改:
The 1dog chased the cat. The cat killed the 2dog.
这是我到目前为止所做的:
var str = 'Dog';
int count = 0;
var regex;
var regex = new RegExp(str, "g");
for (var i = 0, i < str.length; i++) {
counter = count++;
document.body.innerHTML = document.body.innerHTML.replace(regex, counter + "Dog");
}
答案 0 :(得分:1)
对代码进行微不足道的更改会让您开始工作(我认为),但不是很好的解决方案:
var count = 0;
document.body.innerHTML = document.body.innerHTML.replace(regex,
function(match) {
return ++count + match;
}
);
请注意,您不需要循环:只要您拥有replace
标记,/g
就会为您执行循环。
问题在于您可能会更改不应更改的内容,例如元素名称,属性名称和值,javascript代码或样式规则。一个更好(但有点参与)的解决方案是通过DOM递归寻找文本节点,并对其内容进行替换。
答案 1 :(得分:1)
您可以使用替换功能执行此操作:
var t="The dog chased the cat. The cat killed the dog. so why the dog is eating a dog ?"
i=1;
t=t.replace(/(dog)/ig, function replacer(match, p1)
{
return (i++)+p1;
});
console.log(t)
结果:
1狗追赶了这只猫。这只猫杀死了2狗。为什么3dog是 吃4狗?
(编辑为1基于计数)
答案 2 :(得分:1)
您应该使用replace
这样的功能:
var text = "The dog chased the cat. The cat killed the dog.";
var count = 0;
text.replace(/dog/g,function($0){
count += 1;
return count+$0;
})