目前我正在尝试在javascript中编写一个函数,该函数将搜索doc.body.innerHTML并搜索一组始终采用相同格式的数字字符串。
实施例。 00000000123456
当找到这个号码时,我想让它扣除8 0并将其替换为仅123456。 一旦它只有最后6位数字,我想把它作为一个超链接来搜索特定页面上的那些数字。
如果它更容易编码,那么在制作超链接之前移除8 0并不是完全重要的,只要我可以使超链接本身仅搜索最后6位数。
我尝试了一些不同的方式但没有工作,请轻松,因为我对此很新。
编辑:
示例: 页面包含他关注
姓名:约翰约翰逊 帐号#:00000000123456 电子邮件:john@johnson.com
我需要找到帐号,从头开始删除0,然后用123456替换00000000123456.123456将成为一个超链接,将我带到所述帐户页面。
答案 0 :(得分:0)
希望您正在寻找以下内容:(提示)
document.write("<p>Link: " + txt.link("http://www.example.com") + "</p>");
答案 1 :(得分:0)
我相信这可以做你想要的:
document.body.innerHTML = document.body.innerHTML.replace(/0+(\d{6})/g, function(match, number){
return "<a href='/search/" + number + "'>" + number + "</a>";
});
这会找到前面有一个或多个零的六位数字的任何实例,并将其转换为“/ search / [六位数字]”的链接。您可以在浏览器的javascript控制台中运行它来测试它。
您可能希望仅考虑更换页面的相关部分,而不是整个文档(为了提高性能)。
答案 2 :(得分:0)
这可能是一种方法:
var body = document.getElementsByTagName('body')[0];
// search through each node in the DOM starting from the body element
(function search(child){
for(var i = 0;i < child.childNodes.length;i++){
search(child.childNodes[i]);
}
// if it's a text node
if(child.nodeType === 3){
// if it matches the number replace with a link
var result = /^(:?0{8}(\d+))/.exec(child.textContent);
if(result){
link = document.createElement('a');
// change this to be the href you want
link.href = result[2];
// change this to be the text you want
link.innerHTML = 'search '+result[2];
child.parentNode.replaceChild(link, child);
}
}
})(body);