2013-06-27 101 views
0

我解析下面的查詢字符串:替換HTML文本與解析的查詢字符串對象

/alt_name =測試&測試=品牌&舊=超人&新=蝙蝠俠

,並獲得此對象{alt_name :「Giggitty」,測試:「品牌」,舊:「Supco」,新:「蝙蝠俠」}。

如何創建一個腳本,如果test =品牌用單詞蝙蝠俠(新)替換單詞超人(舊)的內部html實例?

任何幫助大大appriciated。

編輯。雖然一個超級簡單的例子就足夠了,但HTML會有所幫助。

<html> 
    <body> 
     <div> 
      <p>Superman and some other text</p> 
     </div> 
    </body> 
</html> 

基本上我只是想與任何新的分析得到的值,在這種情況下,蝙蝠俠被替換舊分析得到的值,字超人,或者其他的每一個實例。

+0

什麼是HTML是什麼樣子? – DFord

+0

http://stackoverflow.com/questions/4886319/replace-text-in-html-page-with-jquery –

+0

Thanmks。雖然取代文字是我最終想要的。我需要學習如何使用從查詢分析中創建的對象來替換文本。 – user2111603

回答

0

如果你想完全匹配「超人」而不是包含它的東西,你可以做這樣的事情。

HTML

<div> 
    <p>Superman and some other text</p> 
</div> 
<div> 
    <p>More Superman and some other text</p> 
</div> 
<div> 
    <p>Something Supermanish and some other text</p> 
</div> 

的Javascript

function walkTheDOM(node, func) { 
    func(node); 
    node = node.firstChild; 
    while (node) { 
     walkTheDOM(node, func); 
     node = node.nextSibling; 
    } 
} 

function escapeRegex(string) { 
    return string.replace(/[\[\](){}?*+\^$\\.|]/g, "\\$&"); 
} 

function replaceText(node, searchText, replaceText) { 
    var textNodes = [], 
     length, 
     i; 

    function filterTextNodes(currentNode) { 
     if (currentNode.nodeType === 3) { 
      textNodes.push(currentNode); 
     } 
    } 

    walkTheDOM(node, filterTextNodes); 

    i = 0; 
    length = textNodes.length; 
    while (searchText && i < length) { 
     textNodes[i].nodeValue = textNodes[i].nodeValue.replace(new RegExp("\\b" + escapeRegex(searchText) + "\\b"), replaceText); 
     i += 1; 
    } 
} 

var query = { 
    alt_name: "Giggitty", 
    test: "brand", 
    old: "Superman", 
    new: "Batman" 
}; 

if (query.test === "brand") { 
    replaceText(document, query.old, query.new); 
} 

jsfiddle