JS 根据表格(TABLE)模板增加一行(ROW)

本文详细介绍了如何使用JavaScript动态插入行至表格,并在插入过程中进行模板类型的匹配与序列号自增,确保数据结构的一致性和操作的高效性。
/**********************
*增加一行
**表名、序号、模板类型
*************************/
function insertRow(pageCode,index,tpltype){
 index = index==null?0:index;
 var gi = parseInt(globalindex[pageCode]);
 if(isNaN(gi)){//不是数字
     globalindex[pageCode] = index;//修改全局数组中记录该表格的当前序号
     gi = index;
 }
 var tbody = document.getElementById(pageCode+"_Data").tBodies.item(0);//获取第一个<TBody>里的内容
 var tBodiesLen =document.getElementById(pageCode+"_Data").tBodies.item(0).rows.length;//获取第一个<TBody>里的行(即<tr>)数
    for (var i =0;i<tBodiesLen;i++)
    {
      if(document.getElementById(pageCode+"_Data").tBodies.item(0).rows[i].id==tpltype) 
      {//匹配模板类型
   var s  = tbody.rows[i].outerHTML;
   while(s.indexOf("_[0]")>-1){//宏替换
    s = s.replace("_[0]","["+ gi +"]");
   }
   while(s.indexOf("_[seqno]")>-1){//宏替换
    s = s.replace("_[seqno]",(gi+1));//设置序号
   }
   s = s.replace(tpltype,pageCode+"_list"+gi);//改变tr的id,让其符合删除行时的规律
   var tdiv = document.createElement("div");//创建临时div
   tdiv.innerHTML = "<table id=tmpTable>"+s+"</table>";//设置临时div的innerHTML
   tdiv.style.display = "none";//设置临时DIV为隐藏
 
   document.appendChild(tdiv);//添加DIV
 
   var row = document.getElementById("tmpTable").tBodies.item(0).rows[0].cloneNode(true);//克隆临时table的第一行(因为每次只增加一行)
   document.removeChild(tdiv);//删除临时div
   document.getElementById(pageCode).tBodies.item(0).appendChild(row);//把行添加到指定的表格中
   break;
  }
    }
    gi++;//表格序号增加1
 globalindex[pageCode] = gi;//修改记录表格序号的数组

}


 

<think> 我们使用Vue.js和Element UI的el-table组件来增加一行数据。在Vue中,我们通常通过操作数据驱动视图的方式来实现。el-table的数据源是一个数组,我们只需要向这个数组添加一个新的元素(一行数据),然后Vue会自动更新视图。 步骤: 1. 在Vue组件的data中定义表格数据(数组)。 2.模板中使用el-table绑定该数据数组。 3. 创建一个方法,用于向数据数组中添加一个新的对象(代表一行数据)。 4. 调用该方法即可增加一行。 示例代码: 模板部分: ```html <template> <div> <el-table :data="tableData" style="width: 100%"> <el-table-column prop="date" label="日期"></el-table-column> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="address" label="地址"></el-table-column> </el-table> <el-button @click="addRow">新增一行</el-button> </div> </template> ``` 脚本部分: ```javascript <script> export default { data() { return { tableData: [{ date: '2016-05-02', name: '王小虎', address: '上海市普陀区金沙江路 1518 弄' }, { date: '2016-05-04', name: '王小虎', address: '上海市普陀区金沙江路 1517 弄' }] } }, methods: { addRow() { // 向tableData数组中添加一个新的对象 this.tableData.push({ date: '新增日期', // 这里可以设置默认值,或者根据需求动态生成 name: '新增姓名', address: '新增地址' }); } } } </script> ``` 注意: - 使用push方法向数组添加新元素,Vue会检测到数组变化并更新视图。 - 新增行的数据可以根据实际需求从表单获取,这里为了示例简单,使用了固定值。 如果需要清空新增行的内容,可以绑定一个空对象,然后通过双向绑定在表格中编辑。 §§相关问题§§ 1. 在Vue中使用Element UI的el-table如何删除一行数据? 2. 如何为el-table的新增行添加表单验证? 3. 在el-table中如何实现行内编辑功能? 4. 使用Vue3的Composition API如何操作el-table的数据? 5. 如何防止el-table数据过多导致的新增行性能问题? </think> 在 Vue.js 中使用 Element Plus 的 `<el-table>` 组件新增一行数据,主要通过操作数据源实现。由于 Vue 是数据驱动的框架,修改绑定的数组数据即可自动更新视图。以下是实现方法和完整示例: ```vue <template> <div> <el-table :data="tableData" style="width: 100%"> <el-table-column prop="date" label="日期" width="180" /> <el-table-column prop="name" label="姓名" width="180" /> <el-table-column prop="address" label="地址" /> </el-table> <el-button @click="addNewRow" type="primary" style="margin-top: 20px"> 新增一行 </el-button> </div> </template> <script> import { ref } from 'vue'; export default { setup() { // 初始表格数据 const tableData = ref([ { date: '2023-05-02', name: '张三', address: '北京市朝阳区' }, { date: '2023-05-04', name: '李四', address: '上海市浦东新区' } ]); // 新增行的方法 const addNewRow = () => { tableData.value.push({ date: '2023-05-' + (tableData.value.length + 10), // 生成新日期 name: '新用户' + (tableData.value.length + 1), address: '新增地址' }); }; return { tableData, addNewRow }; } }; </script> ``` **关键点说明:** 1. **响应式数据**:使用 `ref()` 创建响应式数组 `tableData` 2. **新增逻辑**:通过 `push()` 方法向数组添加新对象 3. **自动更新**:修改数组后 Vue 会自动触发 el-table 重新渲染 4. **临时数据**:新行对象可包含默认值或空值(根据业务需求) **扩展场景解决方案:** - 需要表单输入新增数据 → 结合 `<el-form>` 收集数据再添加 - 需要添加到特定位置 → 使用 `splice(index, 0, newRow)` 代替 `push()` - 需要服务端同步 → 在 `push()` 后调用 API 提交数据
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值