关于使用js生成table

本文介绍了一种使用JavaScript创建HTML表格的方法。通过document.createElement方法创建table、tr和td元素,并将其添加到网页中。注意直接创建tr和td可能因浏览器兼容性问题导致显示异常。
var editItemTable = document.createElement("table");//创建表格
var chooseColorRow = editItemTable.insertRow();//创建一行,也就是tr
var colorLabelCell = chooseColorRow.insertCell();//创建一列


网上有说用document.createElement("tr")/("td")这样来创建行和列的.试了。不行.显示不出来.
使用 `el-table` 时动态生成数据,通常涉及根据后端返回的结构动态渲染表格列和行数据。以下是一个实现方法,结合了从后端获取数据、动态生成表头和内容的完整流程。 ### 动态生成列和行数据 假设后端返回的数据结构如下: ```json { "data": [ { "name": "张三", "age": 25, "leave": { "事假": 2, "病假": 1 } }, { "name": "李四", "age": 30, "leave": { "事假": 1, "病假": 3 } } ] } ``` 其中 `leave` 字段是动态的,其键值表示不同的请假类型和天数。 ### 前端实现步骤 #### 1. 获取数据并提取动态列名 使用 `Object.keys()` 提取 `leave` 对象中的键,作为表头: ```javascript getRecord(params).then(res => { this.recordList = res.data.data || []; for (const item of this.recordList) { let leave = item.leave; this.header = Object.keys(leave); break; // 只需提取一次即可 } }); ``` #### 2. 动态渲染列 在 `el-table` 中使用 `v-for` 循环渲染列: ```html <el-table :data="recordList" border> <el-table-column prop="name" label="姓名" align="center"></el-table-column> <el-table-column prop="age" label="年龄" align="center"></el-table-column> <el-table-column label="请假(天)" align="center"> <el-table-column v-for="(item, index) in header" :key="index" :label="item" align="center" > <template slot-scope="scope"> <span>{{ scope.row.leave[item] }}</span> </template> </el-table-column> </el-table-column> </el-table> ``` 这样,表格会根据后端返回的 `leave` 对象动态生成对应的列和数据。 ### 动态添加列和行数据的其他方法 如果需要动态控制列的显示与隐藏,可以结合 `el-dropdown` 和 `el-checkbox-group` 实现列的按需显示[^2]: ```html <el-dropdown :hide-on-click="false"> <span class="el-dropdown-link"> 列选项<i class="el-icon-arrow-down el-icon--right"></i> </span> <el-dropdown-menu slot="dropdown"> <el-dropdown-item> <el-checkbox-group v-model="checkList" @change="selectOptions"> <el-checkbox :label="item.label" v-for="item in options" :key="item.value"></el-checkbox> </el-checkbox-group> </el-dropdown-item> </el-dropdown-menu> </el-dropdown> ``` 在 `data` 中定义 `checkList` 和 `options`: ```javascript data() { return { checkList: [], options: [ { label: '姓名', value: 'name' }, { label: '年龄', value: 'age' }, { label: '事假', value: '事假' }, { label: '病假', value: '病假' } ] }; } ``` 在 `selectOptions` 方法中根据选中的列更新表格数据。 ### 动态生成数据的优势 - **灵活性**:可以根据后端返回的数据结构动态生成列,适应不同业务场景。 - **可维护性**:避免硬编码列名,减少因数据结构调整导致的前端修改。 - **扩展性**:支持动态列的显示与隐藏,提升用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值