为了账号安全,请及时绑定邮箱和手机立即绑定

替换正文中的单词

替换正文中的单词

紫衣仙女 2019-11-26 11:21:33
有没有办法替换放置在HTML正文中的table元素中的普通文本?喜欢用“ hi”代替“ hello”吗?请仅使用不带jQuery的JavaScript。
查看完整描述

3 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

要用另一个字符串替换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');


查看完整回答
反对 回复 2019-11-26
?
慕森王

TA贡献1777条经验 获得超3个赞

下面的功能对我来说很完美:


// Note this *is* JQuery, see below for JS solution instead

function replaceText(selector, text, newText, flags) {

  var matcher = new RegExp(text, flags);

  $(selector).each(function () {

    var $this = $(this);

    if (!$this.children().length)

       $this.text($this.text().replace(matcher, newText));

  });

}

这是一个用法示例:


function replaceAllText() {

  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) {

  var matcher = new RegExp(text, flags);

  var elems = document.querySelectorAll(selector), i;


  for (i = 0; i < elems.length; i++)

    if (!elems[i].childNodes.length)

      elems[i].innerHTML = elems[i].innerHTML.replace(matcher, newText);

}


查看完整回答
反对 回复 2019-11-26
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

我有同样的问题。我在innerHTML上使用replace编写了自己的函数,但这会破坏锚链接等。


为了使其正常工作,我使用了一个库来完成此任务。


该库有一个很棒的API。包含脚本后,我这样称呼它:


findAndReplaceDOMText(document.body, {

  find: 'texttofind',

  replace: 'texttoreplace'

  }

);


查看完整回答
反对 回复 2019-11-26
  • 3 回答
  • 0 关注
  • 616 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信