RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1063735
Accepted
Мирас Текесбаев
Мирас Текесбаев
Asked:2020-12-27 19:21:21 +0000 UTC2020-12-27 19:21:21 +0000 UTC 2020-12-27 19:21:21 +0000 UTC

在表中创建一个新行。javascript

  • 772

我正在尝试向 DOM 添加新行。有名字和姓氏输入,以及一个添加按钮。单击按钮时,应将新行添加到表中。故障排除不起作用。

在此处输入图像描述

<table class="table">
    <tr>
        <th>Имя</th>
        <th>Фамилия</th>
        <th>Удалить</th>
    </tr>
    <tr>
        <td>Иван</td>
        <td>Васильевич</td>
        <td class="delete"><i class="fa fa-trash"></i></td>
    </tr>
    <tr>
        <td>Влад</td>
        <td>Анатольевич</td>
        <td class="delete"><i class="fa fa-trash"></i></td>
    </tr>
</table>

<form action="" id="form">
    <input type="text" name="" class="name" placeholder="Введите имя">
    <input type="text" name="" class="surname" placeholder="Введите фамилию">
    <button type="submit" class="btn">Добавить строку</button>
</form>

我自己编写了这个脚本,简化了网上找到的脚本。但它并没有像我预期的那样工作。现在了解一切如何运作对我来说很重要,看来我所做的一切都是依法进行的。第二天我已经坐在这个任务上。如果您有选择,请分享想法。

var table = document.querySelector('.table');
table.addEventListener('click', checkAct);

function checkAct(event) {
    if (event.target.tagName === 'TD' && event.target.className !== 'delete') {
        editTd(event.target);
    } else if ((event.target.classList.contains('fa-trash')) === true) {
        event.target.closest('tr').remove();
    }
}

function editTd(target) {
    var input = document.createElement('input');
    input.value = target.innerHTML;
    target.innerHTML = '';
    target.appendChild(input);
    input.addEventListener('keypress',addChanges);
}

function addChanges(event) {
    var newCreateInput = event.target;
    var parent = newCreateInput.parentNode;
    if(event.keyCode === 13) {
        parent.innerHTML = newCreateInput.value;
    }
}

var inputName = document.querySelector('.name');
var inputSurname = document.querySelector('.surname');
var btn = document.querySelector('.btn');
var tr = document.createElement('tr');

function definitionsName(name) {
    var td = document.createElement('td');
    td.innerHTML = name.value;
    tr.appendChild(td);
}

function definitionsSurname(surname) {
    var td = document.createElement('td');
    td.innerHTML = surname.value;
    tr.appendChild(td);
}

btn.addEventListener('click',addTr);

function addTr() {
    if (inputName.value === '' || inputSurname.value === '') {
        return alert('Заполните поля Имя и Фамилия');
    }
    definitionsName(name);
    definitionsSurname(surname);
    var td = document.createElement('td');
    var i = document.createElement('i');
    i.classList.add('fa fa-trash');
    td.appendChild(i);
    tr.appendChild(td);
    table.appendChild(tr);
}
javascript
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    user2042869
    2020-12-27T19:47:11Z2020-12-27T19:47:11Z

    我将代码复制给自己,稍微更正了一下,这就是发生的事情:

    <table class="table">
        <tr>
            <th>Имя</th>
            <th>Фамилия</th>
            <th>Удалить</th>
        </tr>
        <tr>
            <td>Иван</td>
            <td>Васильевич</td>
            <td class="delete"><i class="fa fa-trash"></i></td>
        </tr>
        <tr>
            <td>Влад</td>
            <td>Анатольевич</td>
            <td class="delete"><i class="fa fa-trash"></i></td>
        </tr>
    </table>
    
    <form action="" id="form">
        <input type="text" name="" class="name" placeholder="Введите имя">
        <input type="text" name="" class="surname" placeholder="Введите фамилию">
        <button type="submit" class="btn">Добавить строку</button>
    </form>
     <script>
    var table = document.querySelector('.table');
    table.addEventListener('click', checkAct);
    
    function checkAct(event) {
        if (event.target.tagName === 'TD' && event.target.className !== 'delete') {
            editTd(event.target);
        } else if ((event.target.classList.contains('fa-trash')) === true) {
            event.target.closest('tr').remove();
        }
    }
    
    function editTd(target) {
        var input = document.createElement('input');
        input.value = target.innerHTML;
        target.innerHTML = '';
        target.appendChild(input);
        input.addEventListener('keypress',addChanges);
    }
    
    function addChanges(event) {
        var newCreateInput = event.target;
        var parent = newCreateInput.parentNode;
        if(event.keyCode === 13) {
            parent.innerHTML = newCreateInput.value;
        }
    }
    
    var inputName = document.querySelector('.name');
    var inputSurname = document.querySelector('.surname');
    var btn = document.querySelector('.btn');
    var tr = document.createElement('tr');
    
    function definitionsName(name) {
        var td = document.createElement('td');
        td.innerHTML = name.value;
        tr.appendChild(td);
    }
    
    function definitionsSurname(surname) {
        var td = document.createElement('td');
        td.innerHTML = surname.value;
        tr.appendChild(td);
    }
    
    btn.addEventListener('click',addTr);
    
    function addTr(event) {
        event.preventDefault();
        if (inputName.value === '' || inputSurname.value === '') {
            return alert('Заполните поля Имя и Фамилия');
        }
        definitionsName(inputName);
        definitionsSurname(inputSurname);
        var td = document.createElement('td');
        var i = document.createElement('i');
        i.classList.add('fa');
        i.classList.add('fa-trash');
        td.appendChild(i);
        tr.appendChild(td);
        table.appendChild(tr);
    }
     </script>
    
    
    • 1

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    根据浏览器窗口的大小调整背景图案的大小

    • 2 个回答
  • Marko Smith

    理解for循环的执行逻辑

    • 1 个回答
  • Marko Smith

    复制动态数组时出错(C++)

    • 1 个回答
  • Marko Smith

    Or and If,elif,else 构造[重复]

    • 1 个回答
  • Marko Smith

    如何构建支持 x64 的 APK

    • 1 个回答
  • Marko Smith

    如何使按钮的输入宽度?

    • 2 个回答
  • Marko Smith

    如何显示对象变量的名称?

    • 3 个回答
  • Marko Smith

    如何循环一个函数?

    • 1 个回答
  • Marko Smith

    LOWORD 宏有什么作用?

    • 2 个回答
  • Marko Smith

    从字符串的开头删除直到并包括一个字符

    • 2 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5