我有一个能够获得HTML的字符串。在这个HTML中,我有一个文本框,里面有文字:
<div class="aLotOfHTMLStuff"></div>
<textbox>This textbox must be terminated! Forever!</textbox>
<div class="andEvenMoreHTMLStuff"></div>
现在我想从该字符串中删除文本框,包括里面的文本。期望的结果:
<div class="aLotOfHTMLStuff"></div>
<div class="andEvenMoreHTMLStuff"></div>
我怎样才能实现它?两个主要问题:它是一个字符串而不是DOM的一部分,文本框内的内容是动态的。
答案 0 :(得分:1)
这是一个示例,它将在字符串中查找开始和结束标记,并替换它们之间的任何内容。
const template = document.querySelector('#html')
const str = template.innerHTML
function removeTagFromString(name, str) {
const reg = new RegExp('<' + name + '.*>.*<\/'+ name +'.*>\\n*', 'gm')
return str.replace(reg, '')
}
console.log('before', str)
console.log('after', removeTagFromString('textbox', str))
<template id="html">
<div class="aLotOfHTMLStuff"></div>
<textbox>This textbox must be terminated! Forever!</textbox>
<div class="andEvenMoreHTMLStuff"></div>
</template>
答案 1 :(得分:1)
如果是文本字符串而不是HTML,则可以将其转换为DOM:
var str = '<div class="aLotOfHTMLStuff"></div><textbox>This textbox must be terminated! Forever!</textbox><div class="andEvenMoreHTMLStuff"></div>';
var $dom = $('<div>' + str + '</div>');
然后从DOM中删除元素:
$dom.find('textbox').remove();
如果需要,可以收回字符串:
console.log($dom.html());
答案 2 :(得分:0)
试试这个:
var string = '<div class="aLotOfHTMLStuff"></div><textbox>This textbox must be terminated! Forever!</textbox><div class="andEvenMoreHTMLStuff"></div>';
if ( string.includes("<textbox>") ) {
var start = string.indexOf("<textbox>");
var stop = string.indexOf("</textbox>");
string = string.replace(string.slice(start, stop+10), "");
}
console.log(string);
答案 3 :(得分:0)
您可以使用parseHTML将字符串转换为html, 像..
var str = '<div class="aLotOfHTMLStuff"></div><textbox>This textbox must be terminated! Forever!</textbox><div class="andEvenMoreHTMLStuff"></div>';
var a = $.parseHTML(str);
var newstr = "";
a.forEach(function(obj) {
if ($(obj).prop('tagName').toLowerCase() != "textbox") {
newstr += $(obj).prop("outerHTML")
}
});
这非常简单,您可以通过更换"textbox"
答案 4 :(得分:-1)
它是一个字符串,不是DOM的一部分,也不是内部的内容 文本框是动态的。
那么html是一个字符串类型的js变量?像这样?:
var string = '<div class="aLotOfHTMLStuff"></div><textbox>This textbox must be terminated! Forever!</textbox><div class="andEvenMoreHTMLStuff"></div>';
因此,在这种情况下,您可以像这样使用.replace();
:
string = string.replace('<textbox>This textbox must be terminated! Forever!</textbox>', '');