记录利用js获取富文本目录

需求:根据富文本文章内容获取标题生成目录

<div id="content">
    <h1>标题1</h1>
    <p>段落1</p>
    <h2>标题2</h2>
    <p>段落2</p>
    <h3>标题3</h3>
    <p>段落3</p>
</div>
<div class="toc"></div>
<script>

 $(function() { // 获取所有的 h 标签

 var  headings = $('#content').find('h1,h2,h3,h4,h5,h6');

 if (headings.length) {

 var  tocHtml = '<ul>'; // 遍历所有获取到的 h 标签

 headings.each(function(i, heading) {

 var  id = $(heading).attr('id') || ('heading-' + i);

 $(heading).attr('id', id); // 子目录缩进

 var  indent = new  Array(parseInt(heading.tagName.substring(1)) - 1).join('&nbsp;&nbsp;');

 tocHtml += '<li>' + indent + '< a href="#' + id + '">' + $(heading).text() + '</ a></li>';

            });

 tocHtml += '</ul>';

 $('.toc').html(tocHtml); // 点击目录跳转至对应位置

 $('.toc a').click(function(e) {

 e.preventDefault();

 var  target = $($(this).attr('href'));

 $('html,body').animate({

 scrollTop:  target.offset().top

}, 500);

            });

        }

    });

</script>

科技改变生活:laughing:,后端仔网上找了几个方案不太合适,要不是得服务端做正则,要不是缺少递归,直接chatgpt把我问题解决了

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!