JavaScript Регулярные выражения, сопоставление и замена ссылки - PullRequest
0 голосов
/ 15 июня 2010

пожалуйста, помогите мне

 <html>
  <body>
       http://domainname.com/abc/xyz.zip
       http://domainname2.com/abc/xyz.zip 

 </body>
 </html>

Я хочу заменить ссылкой и поставить как

 <html>
  <body>
      <a href="http://domainname.com/abc/xyz.zip">http://domainname.com/abc/xyz.zip</a>
      <a href="http://domainname2.com/abc/xyz.zip">http://domainname2.com/abc/xyz.zip</a>

 </body>
 </html>

Большое спасибо

Ответы [ 2 ]

1 голос
/ 15 июня 2010
0 голосов
/ 15 июня 2010

Попробуйте эту функцию:

function linkify(element) {
    var children = element.childNodes,
        stub = document.createDocumentFragment();
    for (var i=0; i<children.length; ++i) {
        if (children[i].nodeType === Node.TEXT_NODE) {
            var parts = children[i].nodeValue.split(/(http:\/\/\S+)/);  // adjust regex
            if (parts.length > 1) {
                for (var j=0; j<parts.length; ++j) {
                    if (j % 2 === 1) {
                        var link = document.createElement("a");
                        link.setAttribute("href", parts[j]);
                        link.appendChild(document.createTextNode(parts[j]));
                        stub.appendChild(link);
                    } else {
                        stub.appendChild(document.createTextNode(parts[j]));
                    }
                }
                continue;
            }
        }
        stub.appendChild(children[i]);
    }
    document.write(stub.childNodes.length);
    element.parentNode.replaceChild(stub, element);
}
linkify(document.body);

Это чистая манипуляция DOM.Эта linkify функция ожидает, что аргумент будет HTMLElement .Вам просто нужно настроить регулярное выражение для захвата URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...