javascript - 使用 javascript 操作 html 字符串变量

标签 javascript

我需要用 JavaScript 操作一个字符串变量,它有一些 html 内容。我想搜索一些元素,更改它们并用另一个 div 容器包装这些元素。

我怎样才能得到这个:

var myArr = ['Foo', 'Bar'];
var contenthtml = "<p>Foo</p>
  <p>Lorem ipsum dolor sit amet</p>
  <p>Lorem <b>ipsum</b> dolor sit amet</p>
  <p>Lorem ipsum dolor sit amet</p>
  <p>Bar</p>
  <p>Lorem ipsum dolor sit amet</p>";

为此:

contenthtml = "<div class='foo'><h1>Foo</h1>
  <p>Lorem ipsum dolor sit amet</p>
  <p>Lorem <b>ipsum</b> dolor sit amet</p>
  <p>Lorem ipsum dolor sit amet</p></div>
  <div class='bar'><h1>Bar</h1>
  <p>Lorem ipsum dolor sit amet</p></div>";

最佳答案

您可以使用正则表达式(类似于我在 https://stackoverflow.com/a/21803683/3210837 的其他回答):

var keywordsRegEx = keywords.map(function(x){return x.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');}).join('|');
var result = str.replace(new RegExp('<p>(' + keywordsRegEx + ')</p>\r\n((?:[ \t]*<p>(?:(?!' + keywordsRegEx + ').)*</p>(?:\r\n)?)*)', 'mgi'), '<div><h1 class="$1">$1</h1>\r\n$2</div>\r\n');

参见 http://jsfiddle.net/ncu43/1/一个完整的例子。

正则表达式的作用是匹配 <p> ,关键字之一,</p> ,然后是一个段落(不包含其中一个关键字)零次或多次。

关于javascript - 使用 javascript 操作 html 字符串变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21789280/

相关文章:

javascript - Yeoman Webapp Generator 创建的项目中的 HTML5 Boilerplate 位于何处?

javascript - 如何通过 Javascript 在 Flowplayer 中更改视频(并立即开始播放)?

javascript - Ajax数据双向数据绑定(bind)策略?

javascript - jQuery 到 Javascript 的转换

javascript - jQuery fadeOut 关闭错误的 div

javascript - Ajax 表单上传进度条

javascript - 保留字 JavaScript "this"

javascript - 使用原生 JS 在页面上移动 div,如果 div 进入另一个页面则将其删除

javascript - 如何通过鼠标滚轮水平滚动div,锁定body滚动?

javascript - 重命名没有 id 的按钮文本