从javascript输出中删除HTML标签


Remove HTML tags from javascript output

我环顾了一下stackoverflow,但我找不到解决我问题的答案。我希望我能解释一下,这样你们都能明白我在做什么……(如果需要更多的信息,请告诉我)。

我有一个片段PHP脚本,从会话数组中添加和删除内容。现在这是这个脚本的代码:

<?php foreach ($_SESSION['products'] as $product): ?>
    <p style="font-size:1.2rem"><?php echo htmlspecialchars($product); ?></p>
<?php endforeach;?>

使用Javascript,我将此回显到textarea,并返回值。

Javascript

$('.my-subject').click(function(){
    var title = $(this).attr('value');
      $("textarea#thema").html(data); 
})

现在它返回的值与HTML标签<p></p>。我怎么能让它返回值没有HTML标签和在结束换行?我试着使用:

$("textarea#thema").text() + ''n';

但这不起作用,这仍然显示<p> -标签,没有换行。

我还看到了一些这样的代码:

function removeTags(){
    var txt = document.getElementById('myString').value;
    var rex = /(<([^>]+)>)/ig;
    alert(txt.replace(rex , ""));
}

但我不知道我是否可以使用我的代码和如何做到这一点…任何帮助都会很感激。谢谢。

听起来data是一个包含<p style="font-size:1.2rem">STUFF HERE</p>形式标记的字符串,重复,而您只想获得STUFF HERE部分。

可靠的方法是解析HTML并从中提取文本:

// The data
var data =
    '<p style="font-size:1.2rem">First</p>' +
    '<p style="font-size:1.2rem">Second</p>' +
    '<p style="font-size:1.2rem">Third</p>';
// Parse it
var elements = $.parseHTML(data);
// Convert that to an array of the text of the entries
var entries = elements.map(function(element) {
  return $(element).text();
});
// Get a string of the array entries joined with "'n"
var value = entries.join("'n");
// Done!
$("#output").val(value);
<textarea id="output" rows="4"></textarea>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

可以写得更简洁,但为了清晰起见,我将各部分分开。