每次使用单词时计算和标记

时间:2015-05-13 08:33:33

标签: javascript html

我想找到并计算“#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");
}

3 个答案:

答案 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;
})