我环顾了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 , ""));
}
但我不知道我是否可以将其用于我的代码以及如何执行此操作...任何帮助都将不胜感激。感谢。
答案 0 :(得分:2)
听起来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);
&#13;
<textarea id="output" rows="4"></textarea>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
可以更简洁地书写,但为了清楚起见,我将各部分分开。