原生JS 将数组的数据循环遍历到HTML中

由于我在学校是学安卓的然后实习期学前端又是直接上框架(不得不说vue的v-for是真的香),所以原生JS的一些基本操作用着真难受!!!下面是原生JS 将数组的数据循环遍历到HTML中的列子,是的,没有用框架的HTML里的循环是用JS将一串字符串标签通过DOM渲染到HTML中的。

▼传统易懂的for写法和字符串拼接
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>将数组的数据循环遍历到HTML中</title>
</head>

<body>
    <div id="LoveID"></div>
</body>
<script>
    // 自定义字符串,用于拼接标签
    var loveStr = "";

    // 自定义数组
    var loveArr = ['喜爱一个人需要理由吗?', '需要吗?', '不需要吗?'];

    /****普通for循环****/
    for (let i = 0; i < loveArr.length; i++) {
        loveStr += '<div>' + loveArr[i] + '</div>';
    };
    console.log(loveStr)

    // 拼接完字符串数组后用innerHTML把它渲染到页面中
    document.getElementById("LoveID").innerHTML = loveStr;
</script>

</html>

看下控制台的打印:
在这里插入图片描述

看下打印后的HTML:
在这里插入图片描述

可以看到用普通for循环和普通的字符串拼接是可实现遍历的,但是在实际项目开发中这是很不佳的,很耗费时间。所以我们要学习新的ECMAScript语法,其中循环我用的是ECMA5的forEach()map(),处理字符串用的是ECMA6的模板字符串,如果这两样有不懂的自己去补习一下,箭头函数我相信大家都会,我这里不多说了。

▼一层循环用forEach()
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>将数组的数据循环遍历到HTML中</title>
</head>

<body>
    <div id="LoveID"></div>
</body>
<script>
    // 自定义字符串,用于拼接标签
    var loveStr = "";

    // 自定义数组
    var loveArr = ['喜爱一个人需要理由吗?', '需要吗?', '不需要吗?'];

    /****forEach循环****/
    loveArr.forEach(e => {
        loveStr += `<div>${e}</div>`;
    })
    console.log(loveStr)
    
    // 拼接完字符串数组后用innerHTML把它渲染到页面中
    document.getElementById("LoveID").innerHTML = loveStr;
</script>

</html>

这的输出和上面一样

▼多层嵌套循环用forEach()+map()
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>将数组的数据循环遍历到HTML中</title>
</head>

<body>
    <div id="LoveID">
        <!-- <div class="row">
            <div class="title">场景一</div>
            <div class="text">
                <span>1.喜爱一个人需要理由吗?</span>
                <span>2.需要吗?</span>
                <span>3.不需要吗?</span>
            </div>
        </div> -->
    </div>
</body>
<script>
    // 自定义字符串,用于拼接标签
    var loveStr = "";

    //自定义数组
    var loveArr = [
        { title: '场景一', textArr: ['喜爱一个人需要理由吗?', '需要吗?', '不需要吗?'] },
        { title: '场景二', textArr: ['不上班行不行?','不上班你养你啊?', '我养你啊?'] },
    ];

    /**
     * forEach+map循环
     * forEach和map的第一个参数是当前元素,第二个是数组下标
     * .join('')的作用是去掉map循环后返回多余的逗号
     */
    loveArr.forEach(e => {
        loveStr += `<div class="row">
                        <div class="title">${e.title}</div>
                        <div class="text">
                            ${e.textArr.map((element, index) => {
                                return `<span>${index + 1}.${element}</span>`
                            }).join('')}
                        </div>
                    </div>`
    })
    console.log(loveStr)

    // 拼接完字符串数组后用innerHTML把它渲染到页面中
    document.getElementById("LoveID").innerHTML = loveStr;
</script>

</html>

看下控制台的打印:
在这里插入图片描述

看下打印后的HTML:
在这里插入图片描述
以上便是我经过开发项目后,觉得比较舒服和简洁的用于处理遍历标签的一种方式。当然,如果你要用for...infor...of也是可以的,或者有更好的选择也可以分享出来,哈哈(ノ´▽`)ノ♪

  • 36
    点赞
  • 128
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值