如何使用超链接替换document.body.innerHTML中的数字字符串

时间:2013-04-18 20:43:33

标签: javascript hyperlink

目前我正在尝试在javascript中编写一个函数,该函数将搜索doc.body.innerHTML并搜索一组始终采用相同格式的数字字符串。

实施例。 00000000123456

当找到这个号码时,我想让它扣除8 0并将其替换为仅123456。 一旦它只有最后6位数字,我想把它作为一个超链接来搜索特定页面上的那些数字。

如果它更容易编码,那么在制作超链接之前移除8 0并不是完全重要的,只要我可以使超链接本身仅搜索最后6位数。

我尝试了一些不同的方式但没有工作,请轻松,因为我对此很新。


编辑:

示例: 页面包含他关注

姓名:约翰约翰逊 帐号#:00000000123456 电子邮件:john@johnson.com

我需要找到帐号,从头开始删除0,然后用123456替换00000000123456.123456将成为一个超链接,将我带到所述帐户页面。

3 个答案:

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

演示:http://jsfiddle.net/louisbros/6a8fA/