我有一个包含html标签的字符串:
var str = "<div><p></p><p><i>blabla</i></p><p><i><b>blaaaaaablaaaaa</b></i></p><iframe src='urlAAA' height='400' width='800'></iframe><p></p><p><sub>hello blabla</sub></p><p><br></p><iframe src='urlBBB' height='400' width='800'></iframe></div>";
我想以这种方式用<iframe>
标记替换每个<button>
标记:
"<button type="button">Click Me for iframe n°1 !</button>"
"<button type="button">Click Me for iframe n°2 !</button>"
等...
我正在使用angularJS。我认为解决方案是做这样的事情:
var ele = angular.element(str);
ele.replaceWith(function(index){
return "<button type='button'>Click Me for iframe n°" + index + " !</button>";
});
但我不知道如何为<iframe>
代码
有什么建议吗?谢谢!
编辑:
这是一个新的例子,我想做的事情:
在var str
我有2个<iframe>
个标签,其中src
属性值不同:
第一个iframe有src='urlAAA'
第二个src='urlBBB'
我希望能够访问src属性并将其替换为另一个url。
function editFrameAttributes(str){
var array =[];
var eles= angular.element(str).find('iframe');
[].forEach.call(eles, function (ctl) {
array.push(ctl.outerHTML)
});
Object.keys(array).forEach(function (key) {
var tempEl = document.createElement('div');
tempEl.innerHTML = array[key];
tempEl.childNodes[0].attributes['src'].value = "www.something.com";
tempEl.childNodes[0].attributes['width'].value = '1234';
array[key] = tempEl.innerHTML;
});
//then I don't know how to replace old iframes by new iframes in 'str'
return newStr;
}
输出应如下所示:
var str = "<div><p></p><p><i>blabla</i></p><p><i><b>blaaaaaablaaaaa</b></i></p><div><iframe src='www.something.com' height='400' width='1234'></iframe></div><p></p><p><sub>hello blabla</sub></p><p><br></p><div><iframe src='www.something.com' height='400' width='1234'></iframe></div></div>";
答案 0 :(得分:1)
请参阅此fiddle
当您使用字符串生成角度元素时,您只需将<iframe>
替换为字符串本身中的<button>
即可。
示例:
$scope.str='<iframe>some iframe text<span>span content</span><span>more span content</span></iframe>';
$scope.newStr= $scope.str.replace('<iframe>','<button>').
replace('</iframe>','</button>')
答案 1 :(得分:1)
最后,我找到了解决方案:
function editFrameAttributes(str,newSrc){
var eles = angular.element("<div>"+str+"</div>");
eles.find('[src]').each(function() {
this.src = newSrc;
});
return eles.html();
}