我想通过JavaScript将<body>
中的所有“i”字符替换为“I”。
(例如:<div id="123">Hi! it!</div>
应更改为<div id="123">HI! It!</div>
)。
我知道我必须使用正则表达式。但我不知道应该写些什么。
你能帮助我吗?
谢谢..
答案 0 :(得分:3)
我刚刚回答了一个类似的问题,可以帮助您:JQuery/Javascript - Search DOM for text and insert HTML
对于这种特殊情况,您可以简化。
<强>更新强>
我添加了filter
参数,以便您筛选出特定节点的后代。这应该是一个函数,它接受一个DOM节点参数并返回一个布尔值:true
来替换节点及其后代中的文本,false
忽略节点及其后代。
function replaceText(node, regex, replacementText, filter) {
if (node.nodeType == 3) {
node.data = node.data.replace(regex, replacementText);
} else if (!filter || filter(node)) {
var child = node.firstChild;
while (child) {
replaceText(child, regex, replacementText, filter);
child = child.nextSibling;
}
}
}
function scriptAndStyleFilter(node) {
return node.nodeType != 1 || !/SCRIPT|STYLE/i.test(node.nodeName);
}
replaceText(document.body, /i/g, "I", scriptAndStyleFilter);
答案 1 :(得分:1)
这是一个替代方案,使用CSS,jQuery和Highlight plugin:
CSS:
.highlight {text-transform:uppercase;}
JavaScript的:
$('body').highlight('i');
这是一个快速示例,但您可以使用源代码获取所需内容,以防您需要更复杂的内容。在您的身体来源上使用正则表达式是错误的,特别是在浏览器的上下文中,您已经有一个已解析的DOM结构。