0

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

前任。00000000123456

当它找到这个数字时,我想让它减去 8 个 0 并只用 123456 替换它。一旦它只有最后 6 位数字,我想让它成为一个超链接,以在特定页面上搜索这些数字。

但是,如果它更容易编码,那么在创建超链接之前删除 8 个 0 并不完全重要,只要我可以让超链接本身仅搜索最后 6 位数字。

我尝试了几种不同的方法,但都没有奏效,请放轻松,因为我对此还很陌生。


编辑 :

示例:页面包含以下内容

姓名:john johnson 帐号:00000000123456 电子邮件:john@johnson.com

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

4

3 回答 3

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/

于 2013-04-18T21:14:40.780 回答
0

希望您正在寻找以下内容:(提示)

document.write("<p>Link: " + txt.link("http://www.example.com") + "</p>");
于 2013-04-18T20:51:01.923 回答
0

我相信这可以满足您的要求:

document.body.innerHTML = document.body.innerHTML.replace(/0+(\d{6})/g, function(match, number){
    return "<a href='/search/" + number + "'>" + number + "</a>";
});

这将查找前面有一个或多个零的六位数字的任何实例,并将其转换为指向“/搜索/[六位数字]”的链接。您可以在浏览器的 javascript 控制台中运行它来测试它。

您可能希望只替换页面的相关部分,而不是整个文档(为了提高性能)。

于 2013-04-18T20:58:21.990 回答