两种动态创建表格的方法

对于一个前端小白来讲,节点的获取是比较难理解的,下面将根据近期的学习,来实现输入数据创建表格的效果。方法一使用了map,方法二是简单理解的createElement。

动态创建表格的方法-map

Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。

​ 通过构建一个数组来存储输入的数据,再将数组中每个键值对遍历,返回一个新的数组;再用join将数据变成字符串添加进表格。

​ 还使用了一个API:

insertAdjacentHTML() 将指定的文本解析为HTML或XML,并将结果节点插入到DOM树中的指定位置。

form.addEventListener('submit', event => {
  event.preventDefault();
  var name = nameInput.value;
  var age = ageInput.value;
  var phone = phoneInput.value;
  var birth = birthInput.value;
  const arrNew = [{
    Name: name,
    Age: age,
    Phone: phone,
    Birth: birth
  }]
  //键值数组
  console.log(arrNew);
  const newInf = arrNew.map(person => {
    if (person.Name != "" && person.Age != "" && person.Phone != "" && person.Birth != "") {
      return `<tr>
                <td>${person.Name}</td>
                <td>${person.Age}</td>
                <td>${person.Phone}</td>
                <td>${person.Birth}</td>
                <td><a href="jacascript:;" onclick="delTr(this)">删除</a></td>
              </tr>`
   //返回一个新数组
    } else {
      alert("添加失败")
    }
  })
  const tabInf = newInf.join('');
  tbody.insertAdjacentHTML('beforeend', tabInf);
  form.reset();
})

delTr = (obj) => {
  var tr = obj.parentNode.parentNode;
  tbody.removeChild(tr);
}
复制代码

动态创建表格的方法-createElement

​ 这个方法简单好理解,创建对应的单元格节点,将数据赋给对应单元格文本:

form.addEventListener('submit', function (event) {
  event.preventDefault();
  if (nameInput.value != "" && ageInput.value != "" && phoneInput.value != "" && birthInput.value != "") {
    var tr = document.createElement("tr");
    for (let i = 0; i < ths.length; i++) {
      var td = document.createElement("td");
      switch (i) {
        case 0: td.innerHTML = nameInput.value;   tr.appendChild(td);  break
        case 1: td.innerHTML = ageInput.value;    tr.appendChild(td);  break
        case 2: td.innerHTML = phoneInput.value;  tr.appendChild(td);  break
        case 3: td.innerHTML = birthInput.value;  tr.appendChild(td);  break
        case 4: td.innerHTML = "<a href='javascript:;' onclick='delTr(this)'>删除</a>";  tr.appendChild(td); break
      }
    }
    tbody.appendChild(tr);
  } else {
    alert("保存失败!")
  }
  form.reset();
})
复制代码

form.reset();可以将表单中的数据重置,非常好用。

源代码链接

转载于:https://juejin.im/post/5ca9f6dc5188254418337017

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值