我正在解析以下查询字符串:
/ alt_name =试验&安培;测试=品牌&安培;旧=超人&安培;新=蝙蝠侠
并获取此Object {alt_name:“Giggitty”,test:“brand”,old:“Supco”,new:“Batman”}。
如果test = brand使用单词Batman(new)替换单词Superman(old)的内部html实例,我将如何创建脚本?
任何帮助都非常适合。
编辑。 HTML会有所帮助,尽管一个超级简单的例子就足够了。
<html>
<body>
<div>
<p>Superman and some other text</p>
</div>
</body>
</html>
基本上我只想要将Superman这个单词的每个实例,或者旧的解析值替换为new的解析值,在这种情况下是蝙蝠侠。
答案 0 :(得分: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);
}
上