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