javascript教程零基础如何用循环实现列表动态生成

admin javascript教程 17


是不是手动写列表写到崩溃?想展示 10 条数据就得复制 10 遍标签,改个样式要逐条修改,加新数据还得从头敲代码?刚学 JS 的时候,我也这么干过,写个商品列表复制粘贴到手软,结果改价格时漏改了两条,页面乱得不像样。其实啊,用循环实现列表动态生成,能帮你省超多事,数据变了不用改标签,样式统一还不容易错。今天兔子哥就带零基础的朋友一步步学,从基础原理到实战案例,再到避坑指南,保证你看完就会用循环生成列表,再也不用手动复制粘贴了!

一、为啥要用循环生成列表?手动写不行吗?


现象:手动写列表的坑,你肯定踩过


手动写列表就是把
  • 标签一个个敲出来,比如展示 3 个水果:
    html
    <ul><li>苹果li><li>香蕉li><li>橙子li>ul>

    看着简单,但要展示 100 条数据呢?复制 100 遍?改样式时每条都得改?数据变了又得重新敲?这根本不现实。

    基础问题:循环生成列表到底好在哪?


    Q:“我数据少,手动写写就行,为啥非得学循环?”
    A:现在数据少不代表以后少啊!电商列表、新闻列表、评论区,哪个不是批量数据?用循环生成列表有 3 个大好处:
    1. 省时间:写一次循环,多少数据都能展示,不用复制粘贴;
    2. 好维护:改数据只需改数组,改样式只需改一处;
    3. 灵活:数据变了不用动 HTML,JS 自动生成新列表。
      刚学 JS 的时候,我手动写过 50 条数据的列表,改标题时漏了 3 条,检查半天才找出来,这或许暗示循环在处理批量数据时更高效。

    二、基础步骤:用循环生成列表,就这四步


    场景问题:具体怎么用循环生成?需要哪些知识点?


    其实很简单,核心就是 “数组存数据 + 循环遍历 + 拼接标签 + 添加到页面”,新手跟着这四步走,保证能成。

    1. 用数组存数据:把要展示的内容放进数组


    先把要展示的数据存进数组,比如水果列表:
    javascript
    // 数组存数据,想展示啥就放啥let fruits = ["苹果", "香蕉", "橙子", "草莓", "葡萄"];

    数组就像装数据的篮子,循环会一个个 “拿” 出来用,数据变了改数组就行,不用动其他代码。

    2. 循环遍历数组:让 JS 逐条 “读” 数据


    for循环遍历数组,把每个数据取出来。数组长度是fruits.length,循环从 0 跑到长度 - 1:
    javascript
    // 循环遍历数组,i是索引(从0开始)for (let i = 0; i < fruits.length; i++) {let fruit = fruits[i]; // 取出当前数据,比如第一次循环取到"苹果"console.log(fruit); // 控制台打印,看看是不是取对了}

    这一步要确保循环次数对,别多跑或少跑,不然会漏数据或报错。

    3. 拼接标签:把数据装进
  • 标签里


    循环时把每个数据拼进
  • 标签,存到变量里:
    javascript
    let listHtml = ""; // 存拼接好的标签for (let i = 0; i < fruits.length; i++) {let fruit = fruits[i];// 拼接标签,+=是累加的意思listHtml += `
  • ${fruit}`
    ;}// 循环完后,listHtml就是 "
  • 苹果
  • 香蕉
  • ..."

    这里用${fruit}把数据放进标签,这叫模板字符串,比用+拼接方便多了。

    4. 添加到页面:把拼好的标签放到


      最后找到
        ,把拼好的标签塞进去:
        html
        <ul id="fruitList">ul>

        javascript
        // 找到ul元素let ul = document.getElementById("fruitList");// 把拼好的标签放进去ul.innerHTML = listHtml;

        刷新页面,列表就出来啦!数据变了改数组,样式变了改 CSS,超方便。

        三、实战案例:做个带样式的商品列表


        光展示文字不够,咱们来个带图片和价格的商品列表,更贴近实际场景。

        步骤 1:准备商品数据(数组存对象)


        商品有名称、图片、价格,用数组存对象:
        javascript
        let products = [{ name: "T恤", price: 59, img: "tshirt.jpg" },{ name: "牛仔裤", price: 129, img: "jeans.jpg" },{ name: "运动鞋", price: 299, img: "shoes.jpg" }];

        步骤 2:循环拼接标签(带样式)


        循环时把每个商品的信息拼进标签,加简单样式:
        javascript
        let productHtml = "";for (let i = 0; i < products.length; i++) {let p = products[i]; // 取出当前商品// 拼接带图片和价格的标签productHtml += `
      • ${p.img}
      • " width="100">
        名称:
        ${p.name}
        价格:
        ${p.price}`
        ;}

        步骤 3:添加到页面


        html
        <ul id="productList">ul>

        javascript
        document.getElementById("productList").innerHTML = productHtml;

        刷新页面,带图片和价格的商品列表就出来了!想加新商品,只需在products数组里加一个对象,不用改其他代码,这就是动态生成的好处。

        四、常见错误及解决:这些坑新手最容易踩


        1. 循环次数不对,数据少展示或报错


        现象:列表少了一条数据,或控制台提示 “undefined”。
        原因:循环条件写错了,比如i < products.length写成i <= products.length,最后一次循环会取到不存在的数据。
        解决:循环条件固定用i < 数组名.length,别加等号。

        2. 标签拼接错,页面显示一堆代码


        现象:页面显示
      • 苹果
      • 而不是列表项。
        原因:用了单引号拼接,没加模板字符串的${},比如listHtml += '
      • ' + fruit + '
      • '
        写成了listHtml += '
      • fruit
      • '
        ,把变量当文字了。
        解决:用模板字符串(反引号`)和${},或正确用+拼接:'
      • ' + fruit + '
      • '

        3. 没找到 ul 元素,列表加不进去


        现象:控制台没报错,但页面啥都没有。
        原因:JS 代码跑早了,ul 还没加载就执行了,getElementById返回 null。
        解决:把 JS 代码放前,或用window.onload包裹:
        javascript
        window.onload = function() {// 这里写循环生成列表的代码}

        五、进阶技巧:让列表生成更灵活


        1. 加个 “加载更多” 按钮


        想点按钮加载新数据?给按钮加点击事件,循环新数据拼到原有列表后:
        javascript
        // 原有数据let fruits = ["苹果", "香蕉"];// 新数据let moreFruits = ["橙子", "草莓"];function loadMore() {// 循环新数据,拼到原有标签后for (let i = 0; i < moreFruits.length; i++) {fruits.push(moreFruits[i]); // 加到原有数组let ul = document.getElementById("fruitList");ul.innerHTML += `
      • ${moreFruits[i]}
      • `
        ;}}

        html
        <button onclick="loadMore()">加载更多button>

        2. 根据条件显示不同样式


        想让价格超过 100 的商品标红?循环时加条件判断:
        javascript
        for (let i = 0; i < products.length; i++) {let p = products[i];let priceStyle = p.price > 100 ? 'color: red;' : ''; // 条件样式productHtml += `
      • 价格:${priceStyle}">${p.price}
      • `
        ;}

        六、自问自答:新手最常问的 2 个问题


        Q:“数组里的数据太多,循环会不会卡?”
        A:一般几十上百条数据没问题,浏览器处理得过来。如果数据超千条,可能需要分页加载,但新手先不用考虑这个,先掌握基础循环用法。
        Q:“除了 for 循环,还有其他循环能生成列表吗?”
        A:有啊,比如forEach循环更简单,但 for 循环是基础,学会了再学其他的。forEach用法:
        javascript
        fruits.forEach(function(fruit) {listHtml += `
      • ${fruit}`
        ;});

        不过话说回来,刚开始用循环时,很容易犯循环次数不对的错,建议先把 for 循环练熟。
        兔子哥觉得,用循环生成列表是 JS 新手必学的实战技能,学会了能解决 80% 的批量数据展示问题。刚开始练的时候,别嫌简单,从 5 条数据的列表开始,慢慢加功能,比如加样式、加条件判断、加加载更多。
        我刚开始学的时候,循环次数总算错,要么多一条要么少一条,后来发现只要盯着数组长度写条件i < 数组名.length,基本就不会错。对于某些复杂的嵌套循环优化,具体机制待进一步研究,新手先把基础循环用熟就好。
        现在就打开编辑器,用今天的方法做个水果列表,再加个加载更多按钮,你会发现循环生成列表真的超方便,动手试试吧!

        标签: fruits.length 改标题

        发布评论 3条评论)

        • Refresh code

        评论列表

        2025-10-24 23:10:19

        零基础教程循环生成列表真实用

        2025-10-26 06:15:24

        循环教你动态生成列表

        2025-10-27 03:15:11

        零基础学JS循环实现列表动态生成教程实用