javascript innerHTML正在返回文本而不是html
我正在用angularjS做一个应用程序,我有这个函数来删除#(散列)并将它们组合成链接javascript innerHTML正在返回文本而不是html,javascript,angularjs,text,innerhtml,Javascript,Angularjs,Text,Innerhtml,我正在用angularjS做一个应用程序,我有这个函数来删除#(散列)并将它们组合成链接 $scope.getAllHashes = function(event){ var x = event; var collect = ''; var link = ''; for (i = 0; x.length > i; i++) { //remove # link = x[i].substr(1); col
$scope.getAllHashes = function(event){
var x = event;
var collect = '';
var link = '';
for (i = 0; x.length > i; i++) {
//remove #
link = x[i].substr(1);
collect += "<a href='#/search/" + link + "'>" + x[i] + "</a> ";
}
return document.getElementsByClassName('hashes').innerHTML = collect;
};
源来自此阵列:
$scope.events =
[
{
id: 1,
datetime: 'FRI, 6 NOV 10:00 AM',
title: 'Event Title goes here - lalelalela',
address: {
road: '650 Address Rd',
city: 'Toronto',
state: 'Ontario',
postal: 'A1B1C3',
country: 'CA'
},
hashes: ['#aaa','#bbb','#cccc']
}, .....
这是来自html源代码的代码
<span class="hashes ng-binding">
<a href='#/search/aaa'>#aaa</a> <a href='#/search/bbb'>#bbb</a> <a href='#/search/cccc'>#cccc</a>
</span>
a href='#/search/aaa'#aaa/a href='#/search/bbb'#bbb/a href='#/search/cccc'#cccc/a
我不知道为什么它显示为文本而不是html。对于html,您需要使用ng绑定html
<p ng-bind-html="getHashes({ data: eventObject.hashes })"></p>
请确保您已创建并包含对ngSanitize的依赖项。查看文档我假设您使用ng bind或{{}}来输出带有角度的html,对吗?它只输出文本。如果要输出html,必须使用正确的指令。在控制器函数中更改元素的innerHTML可能也是一个坏主意。您应该更新数据,或者直接在视图中输出函数的结果。{{getHashes({data:eventObject.hashes}}}}}那么是的,您不能以这种方式输出html,只能输出字符串。我只是在调用函数。添加数据的是纯javascript。在功能范围内。在我使用.class的#id instad时,它就可以工作了。有更好的方法可以做到这一点。但是我想知道为什么它与ID一起工作而不与类一起工作,因为通过ID可以得到一个具有innerHTML属性的DOM节点,而通过类可以得到一个不具有innerHTML属性的DOM节点集合。。。不清楚为什么要这样做:return document.getElementsByClassName('hashes')。innerHTML=collect;首先,我认为我想做的是:D,我以后会改变它。更好的方法是在ng绑定html中调用函数@麦格拉菲克斯
<span class="hashes ng-binding">
<a href='#/search/aaa'>#aaa</a> <a href='#/search/bbb'>#bbb</a> <a href='#/search/cccc'>#cccc</a>
</span>
<p ng-bind-html="getHashes({ data: eventObject.hashes })"></p>