我正在尝试在处理之前从js feed中删除一些不需要的评论。
如果我尝试这样做
data = data.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, ' ');
console.log(data);
我得到错误data.replace不是一个函数..这是因为它仍然是对象格式吗?
我这样做的原因是提要中有
test test <script>console.log("some script")</script> more text
在处理之前,我需要把它去掉,因为在knockout中不能加载这个数据
数据是一组json格式的数据。
var data = [
{
'id': '1',
'firstName': 'fname1',
'lastName': 'lname2'
'text': 'Text'
},
{
'id': '2',
'firstName': 'fnam2',
'lastName': 'lname2'
'text': 'text text <script>console.log("some script")</script> text'
}]
发布于 2015-07-03 10:38:14
没错,您不能将replace应用于对象。它需要是一个字符串,所以您应该遍历所有元素并将replace应用于相关字段
data.map(function (element) {
element.text = element.text
.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, ' ');
})发布于 2015-07-03 10:46:17
要简单地删除所有标记,您可以使用JavaScript提供的DOM方法:
var data = [
{
'id': '1',
'firstName': 'fname1',
'lastName': 'lname2',
'text': 'Text'
},
{
'id': '2',
'firstName': 'fnam2',
'lastName': 'lname2',
'text': 'text text <script>console.log("some script")</'+'script> text'
}];
var cleaned = data.map(function(item) {
var d = document.createElement('div');
d.innerHTML = item.text;
// find all tags and strip them
var tags = d.getElementsByTagName('*');
[].forEach.call(tags, function(tag) {
tag.parentNode.removeChild(tag);
});
// save cleaned text
item.text = d.innerHTML;
return item;
});
console.log(cleaned);
https://stackoverflow.com/questions/31197311
复制相似问题