javascript - 如何删除除特定属性之外的所有标签属性?

标签 javascript jquery html regex

我有这个字符串:

var str = '<p>paragraph<a>link</a></p>
           <div class="myclass">
               <div>something</div>
               <div style="mystyle">something</div>
               <b><a href="#">link</a></b>
               <b><a href="#" name="a name">link</a></b>
               <b style="color:red">bold</b>
               <img src="../path" alt="something" />
               <img src="../path" alt="something" class="myclass" />
           </div>';

我想删除除 href 之外的所有属性, src , alt 。所以这是预期的结果:

/* 
<p>paragraph<a>link</a></p>
<div>
    <div>something</div>
    <div>something</div>
    <b><a href="#">link</a></b>
    <b><a href="#">link</a></b>
    <b>bold</b>
    <img src="../path" alt="something">
    <img src="../path" alt="something">
</div>

我怎样才能做到这一点?

<小时/>

我可以只选择它们,但没有用:

/<[a-z]+ .*?(href|src|alt)="[^"]+"/g

最佳答案

var str = `<p>paragraph<a>link</a></p>
           <div class="myclass">
               <div>something</div>
               <div style="mystyle">something</div>
               <b><a href="#">link</a></b>
               <b><a href="#" name="a name">link</a></b>
               <b style="color:red">bold</b>
               <img src="../path" alt="something" />
               <img src="../path" alt="something" class="myclass" />
           </div>`;
var div = document.createElement("div");
div.innerHTML=str;
div.querySelectorAll("*").forEach(function(el){
  for (var i = 0, atts = el.attributes, n = atts.length; i < n; i++){
    var att = atts[i].nodeName;
    if (["src","alt","href"].indexOf(att) ==-1) el.removeAttribute(att); 
  }
}); 
// console.log(div); alert shows it more clearly
alert(div.innerHTML);

PS:请注意,您需要反引号来引用嵌入换行符的字符串

关于javascript - 如何删除除特定属性之外的所有标签属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41923316/

相关文章:

javascript - 在两个方向上动态加载用户控件

javascript - 每5秒随机发出一声声音

javascript - 关闭-换硬币

javascript - 这些控件叫什么?

javascript - jQuery 检查元素上是否存在 onClick

jquery - Jw玩家: want to play mp3 audio in jw html5 player with prev/next navigation

javascript - 更改文本颜色以匹配动态背景颜色

javascript - ASP.NET MVC JsonResult 返回 500

javascript - 获取对象内部对象的索引

javascript - HTML 图像翻转 : fade in to the left or right