从javascript输出中删除HTML标记

时间:2016-08-22 12:38:36

标签: javascript php jquery html

我环顾了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 , ""));
}

但我不知道我是否可以将其用于我的代码以及如何执行此操作...任何帮助都将不胜感激。感谢。

1 个答案:

答案 0 :(得分:2)

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

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

&#13;
&#13;
// 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);
&#13;
<textarea id="output" rows="4"></textarea>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

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