猿问

替换正文中的单词

有没有办法替换放置在HTML正文中的table元素中的普通文本?

喜欢用“ hi”代替“ hello”吗?

请仅使用不带jQuery的JavaScript


紫衣仙女
浏览 617回答 3
3回答

幕布斯7119047

要用另一个字符串替换HTML中的字符串,请使用innerHTML的replace方法:document.body.innerHTML = document.body.innerHTML.replace('hello', 'hi');请注意,这将替换hello整个正文的第一个实例,包括您的HTML代码中的任何实例(例如,类名等。),请谨慎使用-为了获得更好的结果,请尝试通过使用以下内容定位代码来限制替换的范围document.getElementById或类似文件。要替换目标字符串的所有实例,请使用带有global标志的简单正则表达式:document.body.innerHTML = document.body.innerHTML.replace(/hello/g, 'hi');

慕森王

下面的功能对我来说很完美:// Note this *is* JQuery, see below for JS solution insteadfunction replaceText(selector, text, newText, flags) {&nbsp; var matcher = new RegExp(text, flags);&nbsp; $(selector).each(function () {&nbsp; &nbsp; var $this = $(this);&nbsp; &nbsp; if (!$this.children().length)&nbsp; &nbsp; &nbsp; &nbsp;$this.text($this.text().replace(matcher, newText));&nbsp; });}这是一个用法示例:function replaceAllText() {&nbsp; replaceText('*', 'hello', 'hi', 'g');}$(document).ready(replaceAllText);$('html').ajaxStop(replaceAllText);您也可以像这样直接进行替换:document.body.innerHTML = document.body.innerHTML.replace('hello', 'hi');但是要小心,因为它也可能会影响标签,css和脚本。编辑: 至于纯JavaScript解决方案,请改用此方法:function replaceText(selector, text, newText, flags) {&nbsp; var matcher = new RegExp(text, flags);&nbsp; var elems = document.querySelectorAll(selector), i;&nbsp; for (i = 0; i < elems.length; i++)&nbsp; &nbsp; if (!elems[i].childNodes.length)&nbsp; &nbsp; &nbsp; elems[i].innerHTML = elems[i].innerHTML.replace(matcher, newText);}

慕哥6287543

我有同样的问题。我在innerHTML上使用replace编写了自己的函数,但这会破坏锚链接等。为了使其正常工作,我使用了一个库来完成此任务。该库有一个很棒的API。包含脚本后,我这样称呼它:findAndReplaceDOMText(document.body, {&nbsp; find: 'texttofind',&nbsp; replace: 'texttoreplace'&nbsp; });
随时随地看视频慕课网APP
我要回答