2015-06-04 47 views
0

我有一堆<a id="r"></a>标签的文档,并且想要为每个添加递增数字,所以,<a id="r1"></a> ... <a id="r2"></a>等。我目前的循环有,似乎没有工作。替换方法,增加一个递增的数字到重复的字符串

function(doc) { 
    for (var i = 1; i <= doc.length; i++) { 
     var number = 1; 
     return doc.replace(/<a id=""><\/a>/, '<a id="page' + number + '"></a>'); 
     number += 1 
};}, 

回答

0

我不认为你想循环。尝试在替换模式做一个全球性的正则表达式与增加的数字:

function(doc) { 
    var number = 1; 
    return doc.replace(/(<a\s+[^>]*id="r)("[^>]*>[^<]*<\/a>)/gi, function(m, a, b) { 
     return a + (number++) + b; 
    }); 
}; 

这看起来对于任何<A>标签与id="r",保持自己的内容和属性相同,但改变了rr1r2r#。这是你想要的吗?

+0

是的!谢谢! – user3681459

+0

不客气:) –

+0

因此,如果我想迭代多个.xhtml文件,是否有一种方法可以保存最终号码并让它在下一个文件的该号码处重新开始? – user3681459

0

如果您return在循环内,它不会迭代多次。

0

您正在设置循环内的var number = 1;。你已经有了一个整数i,所以使用+ i +,你在循环内返回。

0

尝试声明number以外的循环。

function(doc) { 
    var number=1; 
    for (var i=1;i<=doc.length;i++) { 
    return doc.replace(/<a id=""><\/a>/,'<a id=\"page'+number+'\"></a>'); 
    number+=1; 
    } 
},