JavaScript 如何遍历输出以下结构
阿神
阿神 2017-04-11 09:16:22
[JavaScript讨论组]

本人项目的需求是:页面上同一个p 下有若干<h$>标签。我想把该p下标题标签(h标签)的内容,按照从上至下的顺序遍历出来。求高人指点一二,非常谢谢!(使用原生JS,不借助jQuery 等其他JS库)

待遍历的结构:


<p id="container">
    <h1>标题1</h1>
    <h2>标题2</h2>
    <h4>标题4</h4>
    <h1>标题1</h1>
    <h3>标题3</h3>
</p>

需要遍历后为以下结构:


<ul>
    <li class="h1">标题1</li>
    <li class="h2">标题2</li>
    <li class="h4">标题4</li>
    <li class="h1">标题1</li>
    <li class="h3">标题3</li>
</ul>

希望能解答一二,配上简单的代码实现,非常谢谢

阿神
阿神

闭关修行中......

全部回复(3)
PHP中文网

首先把h$元素选取出来:

var container = document.querySelector('#container');
var headings = container.querySelectorAll('h1, h2, h3, h4, h5, h6');

然后迭代、拼接:

var len = headings.length,
    ul = document.createElement('ul'),
    ulHtmlStr = '';
for (var i = 0; i < len; i++) {
    var heading = headings[i];
    ulHtmlStr += '<li class="' + heading.tagName.toLowerCase() + '">' + heading.textContent + '</li>';
}
ul.innerHTML = ulHtmlStr;
黄舟
`
<ul>
    ${Array.from(
        document
            .querySelector('#container')
            .querySelectorAll('h1,h2,h3,h4,h5,h6'))
            .map(h => `
                <li class="${h.tagName.toLowerCase()}">
                    ${h.textContent}
                </li>`
            )
            .join('')
    }
</ul>
`
PHP中文网

var $container = document.getElementById('container');
$container.innerHTML = $container.innerHTML

.replace(/\<(\w+)?\>([^\<\>]*)?/g, 
    function (_, $1, $2) {
        return '<li class="' + $1 + '">' + $2 + '</li>'
    });
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号