JS或jquery:访问html标记的内容如果存储在数组中的字符串中

ax6ht2ek  于 2022-12-16  发布在  jQuery
关注(0)|答案(2)|浏览(105)

我有一个包含DOM的字符串数组,例如:

array = [
"<p class="item">text</p>",
"<h1>hello</h1>
];

我想替换每个DOM的内容,我想使用replace()方法,但由于它不总是<p>,有时DOM有一个类,我不能只针对<p></p>之间的文本。我试图对数组项使用.html()方法,但它不起作用。你有什么想法吗?

yhived7q

yhived7q1#

您可以借助下面的RegEx实现此要求

/<([^> ]+)([^>]*)>([^<]+)(<\/\1>)/

现场演示**:**

const arr = [
  "<p class='item'>text</p>",
  "<h1>hello</h1>"
];

const regExp = /<([^> ]+)([^>]*)>([^<]+)(<\/\1>)/;

arr.forEach((el, index) => {
  const elementContent = el.match(regExp)[3];
  arr[index] = el.replace(el.match(regExp)[3], 'replaced text');
})

console.log(arr);
omhiaaxx

omhiaaxx2#

试试这个:

let array = [
  "<p class='item'>a lot of text</p>",
  "<h1>hello</h1>"
]

function changeElementText(_array, _index, _newText) {
  return _array.map((e, i) => {
    if (i === _index) return e.replace(/>[\s\S]*</g, `>${_newText}<`)
    return e
  })
}

console.log(changeElementText(array, 0, 'Text Changed! 🦊'))
// [ 
// "<p class='item'>Text Changed! 🦊</p>", 
// '<h1>hello</h1>' 
//]
// (This returns a copy of the original array)

// if you want to overwrite the original value
array = changeElementText(array, 0, 'Text Changed! 🦊')

字符串

相关问题