Js-动态控制table的tr、td增加及删除的具体实现

无线客户端信息动态展示
<table id='wifi_clients_table' style="color:#0099CC;font-size:12px;" class="table table-striped table-bordered table-hover table-condensed"> 
<thead> 
<tr class="success"> 
<th>序号</th> 
<th>机器名</th> 
<th>IP地址</th> 
<th>MAC地址</th> 
<th>上行/下行速率</th> 
</tr> 
</thead> 
<tbody> 

</tbody> 
</table> 

 

 

增加:

if(条件) 
{//根据InterfaceType的值区分无线客户端和有限客户端 
var table = document.getElementById("wifi_clients_table"); 
var newRow = table.insertRow(); //创建新行 

var newCell1 = newRow.insertCell(0); //创建新单元格 
newCell1.innerHTML = "<td>1</td>" ; //单元格内的内容 
newCell1.setAttribute("align","center"); //设置位置 

var newCell2 = newRow.insertCell(1); //创建新单元格 
newCell2.innerHTML = "<td>"+info.LANHosts.HostName+"</td>"; 
newCell2.setAttribute("align","center"); //设置位置 

var newCell3 = newRow.insertCell(2); //创建新单元格 
newCell3.innerHTML = "<td>"+info.LANHosts.IPAddress+"</td>"; 
newCell3.setAttribute("align","center"); //设置位置 

var newCell4 = newRow.insertCell(3); //创建新单元格 
newCell4.innerHTML = "<td>"+info.LANHosts.MACAddress+"</td>"; 
newCell4.setAttribute("align","center"); //设置位置 

var newCell5 = newRow.insertCell(4); //创建新单元格 
newCell5.innerHTML = "<td>"+info.LANHosts.UpRate+"/"+info.LANHosts.DownRate+"kb</td>"; 
newCell5.setAttribute("align","center"); //设置位置 

} 

删除:在页面关闭时清除,下次访问时再重新生成,防止每次tr递增,页面错乱

var t1=document.getElementById("lan_clients_table"); 

var rowNum=t1.rows.length; 
if(rowNum>0) 
{ 
for(i=0;i<rowNum;i++) 
{ 
t1.deleteRow(i); 
rowNum=rowNum-1; 
i=i-1; 
} 
} 

 

转载于:https://www.cnblogs.com/hwaggLee/p/4598443.html

<think>我们正在讨论的是u-table(可能是uni-app的uni-table组件)。根据引用[2]中的代码片段,我们看到有一个loading属性绑定在uni-table上:`:loading="loading"`。所以,在uni-table中,我们可以直接通过设置loading属性来控制表格的加载状态。 但是,用户提到的是在u-table、t-tr、u-td增加loading状态。目前,从uni-app的官方文档来看,uni-table组件本身支持loading属性,用于显示加载状态(通常是在表格上方显示一个加载指示器)。但是,对于tr(行)和td(单元格)级别的loading,并没有直接的支持。 我们可以考虑以下方案: 1. 表格级别的loading:使用u-table的loading属性,当数据加载时显示整个表格的加载状态。 2. 行级别的loading:我们可以通过自定义方式实现。例如,在数据中为每一行增加一个loading字段,然后在行的某个td中通过条件渲染来显示加载指示器(比如一个旋转的图标)。同时,我们可以设置行的其他内容不可点或者半透明,表示正在加载。 3. 单元格级别的loading:同样,可以在对应单元格的数据中增加一个loading字段,然后在该单元格内根据loading字段的值来显示加载指示器。 下面我将分别说明: ### 表格级别的loading 在表格上设置loading属性,并绑定一个布尔值。当该值为true时,表格会显示加载效果(通常是一个覆盖整个表格的加载动画)。 示例: ```html <uni-table :loading="tableLoading"> <!-- 表格内容 --> </uni-table> ``` 在script中: ```javascript data() { return { tableLoading: false // 初始化为false,当需要加载时设置为true } }, methods: { fetchData() { this.tableLoading = true; // 发起请求,请求完成后将tableLoading设为false } } ``` ### 行级别的loading 我们可以为数据源的每个对象添加一个属性(例如`rowLoading`),然后在uni-tr上使用条件渲染来显示加载状态。 示例: ```html <uni-tr v-for="(item, index) in list" :key="index"> <uni-td> <!-- 在行的第一个单元格中显示加载图标,当该行的rowLoading为true时显示 --> <view v-if="item.rowLoading" class="loading-icon">加载中...</view> <view v-else>{{ item.name }}</view> </uni-td> <!-- 其他单元格 --> ... </uni-tr> ``` 注意:你可能需要为每一行都设置这样的逻辑,并且加载状态会占据一个单元格的位置。你也可以设计成覆盖整行的效果,这需要额外的样式。 ### 单元格级别的loading 与行级别类似,我们可以在每个单元格对应的数据属性上设置loading,然后在单元格内根据这个属性来显示加载指示器。 示例: ```html <uni-tr v-for="(item, index) in list" :key="index"> <uni-td> <view v-if="item.nameLoading" class="loading-icon">加载中...</view> <view v-else>{{ item.name }}</view> </uni-td> <uni-td> <view v-if="item.otherFieldLoading" class="loading-icon">加载中...</view> <view v-else>{{ item.otherField }}</view> </uni-td> <!-- 其他单元格 --> </uni-tr> ``` ### 注意 - 对于行和单元格级别的loading,我们需要在数据对象中维护对应的loading状态,并在适当的时候更新它们。 - 加载指示器的样式可以自行设计,比如使用一个加载中的图标(如uni-app的`<uni-icons type="spinner-cycle" size="20" class="loading-icon"></uni-icons>`)并加上旋转动画。 旋转动画的样式示例: ```css .loading-icon { animation: rotate 1s linear infinite; } @keyframes rotate { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } ``` 由于uni-truni-td并没有提供原生的loading属性,因此我们只能通过上述自定义方式实现。 总结: - 表格级别:直接使用u-table的loading属性。 - 行级别和单元格级别:通过在数据对象中设置每个行或每个单元格的loading状态,在模板中根据该状态显示加载指示器。 根据用户的问题,他们可能希望知道如何在这三个层级上增加loading状态。因此,我们提供了上述方法。 如果用户使用的是特定的u-table组件(比如可能是其他UI库),建议查看对应文档,但思路是类似的。 §§相关问题§§ 1. 如何在uni-table实现整个表格的加载动画? 2. 如何为uni-table的每一行添加独立的加载状态? 3. 如何为uni-table的单元格添加加载动画? 4. uni-table的loading属性具体控制哪个部分的加载状态? 5. 在uni-app中,如何为表格的行或单元格添加旋转加载图标? </think>针对在 `u-table`、`t-tr`、`u-td` 中添加 loading 状态的需求,以下是具体实现方法: ### 一、表格全局加载状态(u-table 级别) 通过绑定 `loading` 属性控制整个表格的加载状态: ```html <u-table :loading="tableLoading" loading-text="数据加载中..." loading-mode="spinner" <!-- 可选:circle/spinner --> > <!-- 表格内容 --> </u-table> ``` **脚本控制**: ```javascript export default { data() { return { tableLoading: true // 初始为加载状态 } }, mounted() { this.fetchData().then(() => { this.tableLoading = false // 数据获取后关闭加载 }) } } ``` ### 二、行级加载状态(t-tr 级别) 通过数据驱动为特定行添加加载状态: ```html <t-tr v-for="(item, index) in tableData" :key="index" :class="{'loading-row': item.rowLoading}" > <!-- 在单元格内添加加载指示器 --> <u-td> <u-loading v-if="item.rowLoading" size="16" mode="circle" /> <span v-else>{{ item.name }}</span> </u-td> </t-tr> ``` **样式控制**: ```css .loading-row { opacity: 0.6; pointer-events: none; /* 禁用交互 */ } ``` ### 三、单元格级加载状态(u-td 级别) 在单元格内直接嵌入加载组件: ```html <u-td> <div class="cell-content"> <u-loading v-if="item.cellLoading" size="14" color="#2b9939" /> <template v-else> {{ item.value }} </template> </div> </u-td> ``` ### 四、使用注意事项 1. **状态管理**: - 在数据对象中声明加载状态字段(如 `rowLoading`/`cellLoading`) - 异步操作时更新对应状态: ```javascript this.$set(this.tableData[index], 'rowLoading', true) await this.updateRowData() this.$set(this.tableData[index], 'rowLoading', false) ``` 2. **视觉优化**: ```css /* 加载状态下的动画效果 */ .loading-row { transition: opacity 0.3s; background: repeating-linear-gradient( 45deg, #f8f8f8, #f8f8f8 10px, #eef3f6 10px, #eef3f6 20px ); } ``` 3. **交互阻断**: ```javascript @row-click="(item) => !item.rowLoading && handleRowClick(item)" ``` > **提示**:根据 uni-ui 最新文档,`u-table` 的加载状态优先级为:单元格级 > 行级 > 全局级,局部状态会覆盖全局状态[^1][^2]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值