在AngularJS中过滤-html标签中的文本
Filter in AngularJS - text in html tags
我不太擅长过滤,想写一个基于以下内容的自定义过滤器:
我调用一个服务,该服务返回一个带有HTML字符串的JSON对象,HTML字符串与另一个字符串连接在一起,所以HTML很时髦。
我想从以下返回的HTML字符串中获得text1
和text2
:
<span><b>text1</b><b>text2</b>text3</span>
我无法控制以上内容是如何返回给我的,但我只想获得这两个值并将它们连接起来:text1text2
有一个内置的DOM解析器,或者您可以在您的环境中找到一个解析器。请参阅MDN解析XML和元素。所以你可以这样做:
var x = "<span><b>text1</b><b>text2</b>text3</span>";
var oDOM = new DOMParser().parseFromString(x, "text/xml");
var b = oDOM.documentElement.getElementsByTagName("b");
b.length // 2
b[1].innerHTML // text2
HTH
如果你只需要去掉html标签,我认为你可以使用下面的代码
var noHTML = OriginalString.replace(/(<([^>]+)>)/ig,"");
对于过滤器实现
angular.module('myNoHtmlFilterApp', [])
.filter('noHtml', function() {
return function(input) {
input = input || '';
var out = input.replace(/(<([^>]+)>)/ig,"");
return out;
};
})
根据DineSH的回答-我做了这样的事情:
$scope.getTextFromHTML = function(html){
var oDOM = new DOMParser().parseFromString(html, "text/xml");
var b = oDOM.documentElement.getElementsByTagName("b");
return b[0].innerHTML+b[1].innerHTML;
};
我必须预先定义html字符串,因为它还没有在DOM上,就像这样:
var html = "<span><b></b><b></b></span>";
稍后我可能会添加一个for loop
,以防有一个字符串我遗漏了,但就目前而言,这是完美的。谢谢你的帮助!
相关文章:
- 仅当变量有值时才显示D3文本标签
- 如何在 JavaScript 中更改文本标签的堆栈顺序
- 如何在javascript中使用svg文本标签
- 如何在D3中获得可缩放Icicle布局中文本标签的旋转
- 在d3.js中添加文本标签以强制定向图链接
- 章节文本标签没有't显示在D3.JS向下钻取饼图中
- 在每个条形图的中间添加文本标签&鼠标悬停事件
- x 轴文本标签未与 D3.js 中的条形对齐
- 在 D3.js折线图中使用 IMG 而不是文本标签
- 如何将attr(id)添加到特定值的<文本>标签-Js/Jquery
- 如何在 d3 中动态更新文本标签
- D3 强制布局与文本标签和图标
- 当节点太小时,如何在 d3 中隐藏文本标签
- 提交时传递的文本框中的文本标签
- 如何为一行文本输入字段添加用户可编辑的文本标签
- d3基于值的文本标签格式
- 如何转换<文本>(文本标签)在jquery中锚定标签
- 启动d3强制布局折叠,文本标签重复
- 如何检查PDF Form/Javascript中按钮的文本/标签
- 替换输入标记之前或之后的文本标签