博主信息
博文 49
粉丝 1
评论 0
访问量 53449
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
利用DOM操作完成一个简易的用户留言,动态生成一个表格(利用DOM元素创建一个用户留言显示区,利用DOM生成表格)2019年5月9日20点
Nick的博客
原创
982人浏览过

利用DOM元素创建一个用户留言显示区:

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>简易用户留言专区</title>
</head>
<body>
<div >
    <h1 style="margin:0 50px">用户留言专区</h1>
    <label for="comment">请留言:</label>
    <!--留言输入框-->
    <input type="text" id="comment" onkeydown="addComment(this)" style="width: auto">
    <!--留言显示区-->
<!--    reversed有序列表的数字倒序排列-->
    <ol class="list" reversed></ol>

</div>
<script>
    function addComment(comment) {
        // 在控制台中输出keyCode来查看回车键对应的值是13
        // console.log(event.keyCode);
        if (event.keyCode === 13){//用if语句判断是否按了回车键
            //定义item在页面创建一个新标签<li>
            var item = document.createElement("li");
            // item.innerText = comment.value;//为标签内添加文本内容
            item.append(comment.value); // 也可用append()为标签添加文本内容

            // 获取ul标签
            var list = document.querySelector(".list");

            // 用If语句检测如果当前留言列表为空, 则直接插入到到尾部,否则就插入到第一条留言之前
            if (list.childElementCount === 0) {
                list.appendChild(item)
            }else {
                // 如果列表已有留言,则插入到新一条之前
                var first = list.firstElementChild;
                // list.insertBefore(item,first);
                list.prepend(item,first);//在元素的开头位置插入一个li
            }
            // list.appendChild(item);//在ul列表中最后的位置上添加一个li

            // 清空文本框
            comment.value = '';
        }
    }
</script>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例


页面显示效果:简易用户留言专区.png


利用DOM生成一个表格:

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用JavaScript控制表单</title>
    <style>
        table,th,td{
            border: 1px solid #666;
        }

        table {
            width: 500px;
            text-align: center;
            border-collapse: collapse;
        }

        table caption {
            font-size: 1.2rem;
            margin-bottom: 20px;
        }

        /*在nth-of-type(1)前添加父元素,否则thead,tbody中的第一行都会生效*/
        thead tr:nth-of-type(1) {
            background-color: lightblue;
        }

    </style>
</head>
<body>
<table id="cart1">
    <caption>购物车1</caption>
    <thead>
    <tr>
        <th>编号</th>
        <th>品名</th>
        <th>数量</th>
        <th>单价</th>
    </tr>
    </thead>

    <tbody>
    <tr>
        <td>1</td>
        <td>手机</td>
        <td>1</td>
        <td>3000</td>
    </tr>
    <tr>
        <td>2</td>
        <td>电脑</td>
        <td>1</td>
        <td>5000</td>
    </tr>
    <tr>
        <td>3</td>
        <td>手机</td>
        <td>1</td>
        <td>3000</td>
    </tr>
    </tbody>
</table>

<hr>

<table id="cart2">
    <caption>购物车2</caption>
    <thead>
    <tr>
        <th>编号</th>
        <th>品名</th>
        <th>数量</th>
        <th>单价</th>
    </tr>
    </thead>
    <tbody></tbody>
</table>

<hr>

<table id="cart3">
    <caption>购物车3</caption>
    <thead>
    <tr>
        <th>编号</th>
        <th>品名</th>
        <th>数量</th>
        <th>单价</th>
    </tr>
    </thead>
    <tbody></tbody>
</table>

<script>
    // 获取页面元素cart1
    var cart1 = document.getElementById('cart1');

    //children[]用来选择元素中的子元素,抓取的子元素下有子元素可以继续用children[]来抓取
    // 在table的第3个子元素的第2个子元素下的第2个子元素的内容中
    console.log(cart1.children[2].children[1].children[1].innerHTML);
    // 单价, 在第3个子元素的内容中
    console.log(cart1.children[2].children[1].children[3].innerHTML);
    // 单元格的数据是可以更新的, 电脑涨价了: 6000
    cart1.children[2].children[1].children[3].innerHTML = 8000;

    /*
          table对象定义一些属性,可以快速获取指定的子元素
          1. tHead: <thea>
          2. tBodies: <tbody>...复数
          3. tFoot: <tfoot>
          4. rows: 所有行
          5. cells: 所有列
      */
    //tBodies:返回包含表格中所有 tbody 的一个数组。
    //rows:返回包含表格中所有行的一个数组。
    //cells:返回包含表格中所有单元格的一个数组。
    console.log(cart1.tBodies[0].rows[1].cells[3].innerHTML);

    // 定义数据:id:编号,name:品名,count:数量,price:单价
    var data = [
        {id: 1, name: '草莓',count: 80, price: 10},
        {id: 2, name: '桃子',count: 40, price: 20},
        {id: 3, name: '苹果',count: 60, price: 8}
     ];

    // 获取id为cart2的元素
    var cart2 = document.getElementById('cart2')
    // 获取cart2里的tbody(网页主体内存在4个tbody标签,选取第三个)
    var tbody = cart2.children[2];
    data.forEach(function (value) {
        var tr = document.createElement('tr');//在页面内创建tr标签
        tr.innerHTML = '<td>' + value.id + '</td>';//创建tr表单内的td标签和内容
        tr.innerHTML += '<td>' + value.name + '</td>';
        tr.innerHTML += '<td>' + value.count + '</td>';
        tr.innerHTML += '<td>' + value.price + '</td>';
        tbody.appendChild(tr);//在tbody内添加tr表单
    })


    // 用table属性写表单
    var cart3 = document.getElementById('cart3');//获取页面中cart3标签创建定义
    var tbody = cart3.tBodies[0];
    for (var i = 0; i < data.length; i ++) {
        var tr = document.createElement('tr');
        Object.keys(data[i]).forEach(function (key) {
            tr.innerHTML += '<td>' + data[i][key] + '</td>';

        });
        tbody.appendChild(tr);
    }

</script>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例


页面实际显示效果:

购物车最终显示效果图.png

批改状态:未批改

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学