javascript - 制表符表格无法正确查看
问题描述
我有一个按钮,单击按钮将显示表格(制表符),但问题是单击按钮时,表格未正确显示,表格是视图但内容未显示,我需要触发操作,例如调整窗口大小或按 F12显示内容。
当我尝试在 jsfiddle 中测试时,显示标题但内容不显示(需要调整窗口大小以显示数据)
我尝试的是这样的:
$(document).on('click', '#testing', function(){
$('#example-table').show();
});
//define some sample data
var tabledata = [
{id:1, name:"Oli Bob", age:"12", col:"red", dob:""},
{id:2, name:"Mary May", age:"1", col:"blue", dob:"14/05/1982"},
{id:3, name:"Christine Lobowski", age:"42", col:"green", dob:"22/05/1982"},
{id:4, name:"Brendon Philips", age:"125", col:"orange", dob:"01/08/1980"},
{id:5, name:"Margret Marmajuke", age:"16", col:"yellow", dob:"31/01/1999"},
];
//create Tabulator on DOM element with id "example-table"
var table = new Tabulator("#example-table", {
height:205, // set height of table (in CSS or here), this enables the Virtual DOM and improves render speed dramatically (can be any valid css height value)
data:tabledata, //assign data to table
layout:"fitColumns", //fit columns to width of table (optional)
columns:[ //Define Table Columns
{title:"Name", field:"name", width:150},
{title:"Age", field:"age", align:"left", formatter:"progress"},
{title:"Favourite Color", field:"col"},
{title:"Date Of Birth", field:"dob", sorter:"date", align:"center"},
],
rowClick:function(e, row){ //trigger an alert message when the row is clicked
alert("Row " + row.getData().id + " Clicked!!!!");
},
});
<link href="https://unpkg.com/tabulator-tables@4.1.4/dist/css/tabulator.min.css" rel="stylesheet">
<script type="text/javascript" src="https://unpkg.com/tabulator-tables@4.1.4/dist/js/tabulator.min.js"></script>
<script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<button id='testing'>Click this button !!</button>
<div id="example-table" style='display:none'></div>
您也可以签入 jsfiddle,请在此处查看
有人能告诉我为什么会这样吗?
解决方案
这可能是因为您在隐藏表格时创建表格。Tabulator 在绘制时需要可见,因为 Virtual DOM 需要计算组成表格的元素的长度以正确布局表格。一个 DOM 元素在第一次可见之前是没有维度的,这可能会导致表中的某些损坏。
最简单的解决方法是在表格可见后立即调用重绘函数。
table.redraw(true);
Tabulator 网站上的快速入门指南中详细介绍了该主题。
它不会在 Chrome 中发生的原因是因为 chrome 实现了 ES8 ResizeObserver 功能,制表器可以使用该功能来确定表格何时改变形状或变为可见。此功能在其他浏览器中尚不可用。
推荐阅读
- php - 如何恢复发送给 WooCommerce 管理员的新订单电子邮件中的元数据
- python-3.x - 用while循环交换单链表中的节点
- node.js - 未与 Cloud Functions 和 Firestore 建立连接
- vb.net - 如何在 vb.net 表单中禁用 GroupBox 中的所有文本框
- nativescript - 启用捏放大图像标签
- python-3.x - 如何在 python 中使用 selenium 在 instagram 中发送直接消息?
- php - 为什么codeigniter没有显示我的视图,只是找不到404?
- chromium - 画中画视频
- python - 在 Python 中处理目录内容时使用 For 循环
- c# - 如何删除毫秒的时间值