用javascript在表上显示一个空列
Showing an empty column on table with javascript
我想通过JavaScript在表上添加一个新列。
现在,我想显示在添加索引位置的空列。此外,当在其索引位置添加列时,它必须隐藏。
方法代码:function addColumn(tblId, colIndexVal)
{
//New Header
var tblHeadObj = document.getElementById(tblId).tHead;
for (var h=0; h<tblHeadObj.rows.length; h++) {
var newTH = document.createElement('th');
tblHeadObj.rows[h].insertBefore(newTH, tblHeadObj.rows[h].children[colIndexVal] );
newTH.innerHTML = "New Col Header";
}
//New Column cells
var tblBodyObj = document.getElementById(tblId).tBodies[0];
for (var i=0; i<tblBodyObj.rows.length; i++) {
var newCell = tblBodyObj.rows[i].insertCell(colIndexVal);
newCell.innerHTML = 'new cells'
)
}
}
有谁能建议怎么做吗?由于
这是我的纯javascript 最佳猜测在我认为你想要的,考虑到缺乏清晰度,或我的理解,你的问题。它还提供了两个简单的(未进行安全性检查的)方法,以便更容易地遍历/检索(再次说明:没有进行安全性检查,因此要小心使用或改进它们):
/* trying to reduce the necessity of
'this.parentNode.parentNode' etc, to
remove the need to know the exact structure */
Object.prototype.closest = function (elType) {
var parent = this.parentNode;
return parent.tagName.toLowerCase() == elType.toLowerCase() ? parent : parent.closest(elType);
};
/* a simple non-sanity-checked means to find,
and filter, the sibling elements of a node */
Object.prototype.siblings = function (filter) {
var parent = this.parentNode,
s = parent.children,
rs = [],
c, t;
for (var i = 0, len = s.length; i < len; i++) {
c = s[i].className;
t = s[i].tagName.toLowerCase();
if (c.indexOf(filter) > -1 || t == filter) {
rs.push(s[i]);
}
}
return filter ? rs : s;
}
// no attempt whatsoever is being made to make this IE compatible
var table = document.querySelector('table');
function addColumn(e) {
var self = e.target,
cell = self.parentNode,
rows = self.closest('tr').siblings('tr'),
index = cell.cellIndex,
newEl;
for (var i = 0, len = rows.length; i < len; i++) {
rows[i].insertCell(index + 1);
newEl = rows[i].children[index + 1];
// uncomment below if you want to hide:
// newEl.style.display = 'none';
}
}
table.addEventListener('click', addColumn, false);
JS提琴演示
关于jsFiddle的例子
您可以通过在每一行插入一个td
元素来在表上添加一个新列。
function addCol()
{
$("table thead tr").each(function() {
var td = $("<th>");
var index = $(this).find("th").length;
td.html("Col index " + index);
td.appendTo(this);
});
$("table tbody tr").each(function() {
var td = $("<td>");
td.appendTo(this);
});
}
addCol();
addCol();
您基本上希望使用eq来获取索引,然后在新创建的索引之前插入新行(可能还有标头)。
像这样:
var table = $("table") // select your table,
index = 3, // index where to insert
newRow = $("<td></td>");
table.find("th").eq(index).before(newRow)
完整示例(添加头部值):http://jsfiddle.net/cTNqX/
相关文章:
- 我应该如何从xml文件构建一个javascript页面
- 有没有一个javascript图形绘制库可以进行气球树布局
- 如何将一个JavaScript函数回调为多个函数
- 代码背后调用一个JavaScript函数的按钮点击-C#
- 多次调用另一个javascript函数中的javascript函数
- HTML外部javascript加载另一个javascript
- 在一个javascript文件中为整个网站创建标签
- 在任何AJAX调用之前触发一个javascript函数
- 如何用另一个Javascript更改Javascript函数值
- 动态创建一个javascript/jquery多级数组
- 将变量值从一个javascript传递到另一个javascript
- 获取一个javascript对象attr's
- 是一个javascript bookmarklet,可以设置破坏跨域安全的域cookie
- PNG图像被覆盖,但每个图像都有一个链接可以更改,每次一个-Javascript/jQuery/CSS
- 添加一个javascript函数来下载elfinder上的事件
- 有没有一个Javascript代码可以看到你的缓存有多满
- 使用jenkins从不同文件夹中的文件构建一个javascript文件
- 是否有一个javascript库来解析简单的查询
- 一个javascript实现base64图像编码并将结果写入文本文件
- 使用一个Javascript函数提交多个表单可以在FF中工作,而不需要其他浏览器