js 过滤HTML字符串中的<h1>–<h6>标签添加ID属性

let str = '<h1>123</h1><h2>456</h2><div><h3>678</h3></div>'

  找到HTML字符串中所有<h1>–<h6>的标签,并给它们添加唯一的ID属性,如果有ID属性了就不添加;

 

<script type="text/javascript">
let str = '<h1>123</h1><h2>456</h2><div><h3>678</h3></div>'
let index = 1;
str = str.replace(/<h[1-6]\b/ig,function (s) {
	return s + " id='"+(index++)+"'";
});
console.log(str);
</script>

输出结果

<h1 id='1'>123</h1><h2 id='2'>456</h2><div><h3 id='3'>678</h3></div>

<script type="text/javascript">
let str = '<h1>123</h1><h2>456</h2><div><h4 id="aaa">678</h4>gfgh<h3>678</h3></div>'
let index = 1;
str = str.replace(/<h[1-6]\b(?![^<>]*\bid=)/ig,function (s) {
	return s + " id='"+(index++)+"'";
});
console.log(str);
</script>

 

<script>
    let str = '<h1>123</h1><h2>456</h2><div><h3>678</h3><h1>123</h1></div>';
    var kv={ }
    str = str.replace(/<(h\d+)\s*/g, function ($0, $1) {
        if (kv[$1] !== undefined) kv[$1] = kv[$1] + 1;
        else kv[$1] = 1;
//id格式 h标签名_个数
        return '<' + $1 + " id='" + $1 + '_' + kv[$1] + "' "
    });
    alert(str)
</script>

 

上班太累了不想写代码了,如果只是1-6,可以给你个思路,循环查找<h1>,<h2>...... 替换<h1 id='1'>.....


let str = "<h1 id='100'>123</h1><h2>456</h2><div><h3>678</h3><h1>123</h1></div>";
    
str = str.replace(`<h2>`, `<h2 id='2'>`);

这样不会替换已经有id的标签 自个写个循环 把replace里的2用变量替换一下

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y