2013-03-25 22 views
0

我正在使用將關鍵字轉換爲另一個問題中顯示的鏈接的稍微修改版本。函數作爲參數傳遞,具有未定義的自己的參數,仍然有值

的代碼,有一些疏漏,是如下:

$(".keyword_search").each(function() { 
    var targetword = 'TEST'; 
    var explanation = 'Is something you do to find out if stuff works'; 
    //targetword and explanation actually defined in a loop, but omitted here 
    var content = $(this)[0]; 
    var re = new RegExp("(\\b"+targetword+"\\b)", "gi"); 
    content.innerHTML = content.innerHTML.replace(re,keywordconvert); 
} 

function keywordconvert(str, p1, offset, s) { 
    return '<a href="#" data-toggle="tooltip" title="'+p1+'">'+p1+'</a>'; 
} 

我對這個代碼的幾個問題。

1)keywordconvert參數定義在哪裏? STRP1既包含字符串進行替換,偏移包含單詞的起始點在所述內容和小號包含內容

2)我怎麼會去在keywordconvert功能添加說明字符串到標題鏈接的 -class?換句話說,我怎樣才能給這個函數添加參數?

任何幫助將不勝感激,我一直在網上搜尋太久的答案。

+0

看看這裏https://developer.mozilla.org/en/docs/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_function_as_a_parameter – Tetaxa 2013-03-25 08:37:16

+0

我認爲它與此有關:http://stackoverflow.com/questions/10855908/how-to-overload-functions-in-javascript – Natrium 2013-03-25 08:37:22

回答

2

1)keywordconvert的參數定義在哪裏?

String#replace定義。當您使用正則表達式作爲搜索和作爲替換的函數調用replace時,它會調用帶有匹配字符串的函數,定義的任何捕獲組,以及匹配發生的偏移量,最後調用字符串本身。由於傳入的正則表達式定義了一個捕獲組,因此str將是匹配的子串,p1將是捕獲組的內容,offset將是字符串內的索引(偏移量),並且s將是整個字符串,其上調用了replace

2)我該如何去解釋字符串添加到keywordconvert函數中鏈接的標題類?

你可能不得不創建each迭代函數,是不理想的,比如裏面自己的函數:

$(".keyword_search").each(function() { 
    var targetword = 'TEST'; 
    var explanation = 'Is something you do to find out if stuff works'; 
    //targetword and explanation actually defined in a loop, but omitted here 
    var content = $(this)[0]; 
    var re = new RegExp("(\\b"+targetword+"\\b)", "gi"); 
    content.innerHTML = content.innerHTML.replace(re,function(str, p1, offset, s) { 
     return keywordconvert(str, p1 + explanation, offset, s); 
    }); 
}); 

注意,在那裏我有p1 + explanation我想你會想這樣做更有趣的東西,但它是p1,設置title

+0

非常感謝。 這正是我一直在尋找的。 – 2013-03-25 09:44:53

+0

@TommeVidnäs:快樂!很高興這有助於。 :-) – 2013-03-25 09:45:55

相關問題