2011-06-07 45 views
1

我想在提供的字符串中設置錨標記。它在http://之後的javascript中進行搜索並將其設置爲錨定標記。在提供的字符串中設置錨標記

function createLink(text, node){//text is the provided string 
    var start = text.indexOf('http://'); 
    var end = text.indexOf(' ', start) + 1 || text.length - 1; //provides me with the wrong index 
    var link = text.substring(start, end); 
    var newLink = document.createElement('a'); 
    newLink.href = link; 
    newLink.className = 'link'; 
    newLink.target = '_blank'; 
    newLink.innerHTML = link.substr(0, 20); 
    if(link.length >= 20){ 
     $(newLink).append('...'); 
    } 
    var head = text.substring(0, start); 
    var tail = text.substring(end); 
    node.innerHTML = ''; 
    $(node).append(head).append(newLink).append(tail); 
} 
+0

你是如何調用這個函數,什麼是所需的最終結果? – hunter 2011-06-07 11:50:03

+0

我用paremeters文本和我要追加結果的節點調用它。期望的最終結果是prvodided字符串有一個clickabla錨點。但有一些錯誤的變量開始和結束 – einstein 2011-06-07 11:53:00

+0

是的我知道我在調用函數之前有一個if語句確保字符串不包含'http://' – einstein 2011-06-07 12:05:11

回答

0

我覺得你是1關:

function createLink(text, node){ //text is the provided string 
    var start = text.indexOf('http://'); 
    var end = (text.indexOf(' ', start) + 1 || text.length - 1) - 1; 
    var link = text.substring(start, end); 

    var $a = $("<a>", { 
     href: link, 
     "class": "link", 
     target: "_blank", 
     html: link.substr(0, 20) + (link.length >= 20 ? "..." : ""), 
    }); 

    var head = text.substring(0, start); 
    var tail = text.substring(end); 

    $(node).append(head).append($a).append(tail); 
} 

http://jsfiddle.net/hunter/vNrrR/

+0

有些東西仍然是錯誤的.indexOf('',start)有時爲-1 – einstein 2011-06-07 12:03:53

+0

http:/ /jsfiddle.net/vNrrR/4/ – einstein 2011-06-07 12:14:06

+0

好吧現在就去http://jsfiddle.net/vNrrR/6/ – einstein 2011-06-07 12:20:55