—— Alone � ?? 2023-04-08 14:14 采纳率: 40%
浏览 152
已结题

表格动态添加和删除使用原生js

要求

img

1.严格使用素材所给布局
2.必须使用表单提交事件
3.必须将输入的数据存储在数组中,根据数组渲染表格内容
4.删除行的时候,必须将数组中数据也进行删除,不允许出现点击一次按钮,表格中出现多个行的场景
5.仅限使用原生js
6.对表单元素各项都有验证

  • 游戏名称为4~10个汉字
  • 开发公司必选
  • 适用人群必选
  • 游戏类别必选
  • 游戏描述必填
  • 将数据展示在表格中
  • 实现删除功能
  • 添加后清空表单元素

基本布局

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>表格动态添加和删除</title>
</head>

<body>
    <form action="http://www.baidu.com">
        <table>
            <caption>
                <h2>表格添加</h2>
            </caption>
            <tbody>
                <tr>
                    <td>游戏名称:</td>
                    <td><input type="text" name="gamename"></td>
                </tr>
                <tr>
                    <td>开发公司:</td>
                    <td>
                        <input type="radio" name="company" value="腾讯">腾讯
                        <input type="radio" name="company" value="暴雪">暴雪
                        <input type="radio" name="company" value="网易">网易
                        <input type="radio" name="company" value="任天堂">任天堂
                    </td>
                </tr>
                <tr>
                    <td>适用人群:</td>
                    <td>
                        <input type="checkbox" name="people" value="小学生">小学生
                        <input type="checkbox" name="people" value="大学生">大学生
                        <input type="checkbox" name="people" value="白领">白领
                        <input type="checkbox" name="people" value="老年人">老年人
                    </td>
                </tr>
                <tr>
                    <td>游戏类别:</td>
                    <td>
                        <select name="kind">
                            <option value="0">请选择游戏类别</option>
                            <option value="益智类">益智类</option>
                            <option value="动作类">动作类</option>
                            <option value="冒险类">冒险类</option>
                            <option value="策略类">策略类</option>
                            <option value="模拟类">模拟类</option>
                        </select>
                    </td>
                </tr>
                <tr>
                    <td>游戏描述:</td>
                    <td>
                        <textarea name="detail" cols="30" rows="10"></textarea>
                    </td>
                </tr>
                <tr>
                    <td></td>
                    <td>
                        <input type="reset">
                        <input type="submit" value="添加">
                    </td>
                </tr>
            </tbody>
        </table>
    </form>
    <table width=800 border=1>
        <caption>
            <h2>表格展示</h2>
        </caption>
        <thead>
            <tr>
                <th>游戏名称</th>
                <th>开发公司</th>
                <th>适用人群</th>
                <th>游戏类别</th>
                <th>游戏描述</th>
                <th>操作</th>
            </tr>
        </thead>
        <tbody></tbody>
    </table>
</body>

</html>

  • 写回答

4条回答 默认 最新

  • 文盲老顾 新星创作者: 信息安全技术领域 2023-04-08 15:07
    关注

    邀请回答才收到,这边已经有人贴答案了,还需要我们继续么?

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <title>表格动态添加和删除</title>
        <script>
        (function(){
        })()
        window.onload = function(){
            document.querySelector('input[type=button]').onclick = function(){
                // 同样,多个 form ,自行修改选择器
                frm = document.querySelector('form')
                // 自行修改提示,验证我只做简单的是否填值了,正则长度之类的我就不写了
                data = {
                    'gamename': frm['gamename'].value
                    ,'company': frm['company'].value
                    ,'people':(function(){
                        people = ''
                        frm['people'].forEach(function(el){
                            if (el.checked)
                            {
                                people += ',' + el.value
                            }
                        })
                        return people.substr(1)
                    })()
                    ,'kind': (function(){
                        if (frm['kind'].selectedIndex > 0)
                        {
                            return frm['kind'].options[frm['kind'].selectedIndex].value
                        }
                        return ''
                    })()
                    ,'detail': frm['detail'].value
                }
                //console.log(check)
                // 自行添加验证
                if (!data.gamename)
                {
                    alert('名字')
                    return
                }
                if (!data.company)
                {
                    alert('公司')
                    return
                }
                if (!data.people)
                {
                    alert('人群')
                    return
                }
                if (!data.kind)
                {
                    alert('类型')
                    return
                }
                if (!data.detail)
                {
                    alert('评价')
                    return
                }
                // 如果有多个 table 自行修改 querySelector 的选择器
                tb = document.querySelector('form ~ table');
                var tr = document.createElement('tr')
                tb.append(tr)
                for (var k in data)
                {
                    var td = document.createElement('td')
                    td.innerText = data[k]
                    tr.append(td)
                }
                var td = document.createElement('td')
                td.innerText = '删除'
                tr.append(td)
                td.onclick = function(){
                    if (confirm('确定删除?'))
                    {
                        this.parentNode.remove()
                    }
                }
                frm.reset()
            }
        }
        </script>
    </head>
    
    <body>
        <form action="http://www.baidu.com">
            <table>
                <caption>
                    <h2>表格添加</h2>
                </caption>
                <tbody>
                    <tr>
                        <td>游戏名称:</td>
                        <td><input type="text" name="gamename"></td>
                    </tr>
                    <tr>
                        <td>开发公司:</td>
                        <td>
                            <label><input type="radio" name="company" value="腾讯">腾讯</label>
                            <label><input type="radio" name="company" value="暴雪">暴雪</label>
                            <label><input type="radio" name="company" value="网易">网易</label>
                            <label><input type="radio" name="company" value="任天堂">任天堂</label>
                        </td>
                    </tr>
                    <tr>
                        <td>适用人群:</td>
                        <td>
                            <label><input type="checkbox" name="people" value="小学生">小学生</label>
                            <label><input type="checkbox" name="people" value="大学生">大学生</label>
                            <label><input type="checkbox" name="people" value="白领">白领</label>
                            <label><input type="checkbox" name="people" value="老年人">老年人</label>
                        </td>
                    </tr>
                    <tr>
                        <td>游戏类别:</td>
                        <td>
                            <select name="kind">
                                <option value="0">请选择游戏类别</option>
                                <option value="益智类">益智类</option>
                                <option value="动作类">动作类</option>
                                <option value="冒险类">冒险类</option>
                                <option value="策略类">策略类</option>
                                <option value="模拟类">模拟类</option>
                            </select>
                        </td>
                    </tr>
                    <tr>
                        <td>游戏描述:</td>
                        <td>
                            <textarea name="detail" cols="30" rows="10"></textarea>
                        </td>
                    </tr>
                    <tr>
                        <td></td>
                        <td>
                            <input type="reset">
                            <input type="button" value="添加">
                        </td>
                    </tr>
                </tbody>
            </table>
        </form>
        <table width=800 border=1>
            <caption>
                <h2>表格展示</h2>
            </caption>
            <thead>
                <tr>
                    <th>游戏名称</th>
                    <th>开发公司</th>
                    <th>适用人群</th>
                    <th>游戏类别</th>
                    <th>游戏描述</th>
                    <th>操作</th>
                </tr>
            </thead>
            <tbody></tbody>
        </table>
    </body>
    
    </html>
    
    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月8日
  • 赞助了问题酬金15元 4月8日
  • 创建了问题 4月8日