从单元格数据中获取表格
Get the table from cell data
所以这应该很简单,但它似乎让我绊倒了。我在桌子的一个单元格里有一个下拉菜单。当该值更改时,我调用一个javascript函数,并在函数中传递该下拉列表。我该怎么从那里拿到桌子?示例代码:
<table><tr>
<td>DATA</td>
<td><select id='leadState' onChange='updateData(this)'><option selected='selected' value='new'>New</option><option value='old'>Contacted</option></select></td>
</tr>
</table>
javascript:
function updateData(select) {
var table = select.parentNode.parentNode.parentNode;
var row = select.parentNode.parentNode;
var cell = select.parentNode;
}
为什么这不能正确地返回表格?
因为您忘记了tbody
元素(这是可选的,但如果不是所有的话,大多数浏览器都会添加到table
来包装tr
元素。请尝试另一个parentNode
:
function updateData(select) {
// select -> td -> tr -> tbody -> table
var table = select.parentNode.parentNode.parentNode.parentNode;
var row = select.parentNode.parentNode;
var cell = select.parentNode;
}
JS Fiddle演示。
并且您真的不必遍历每个变量的table
:
function updateData(select) {
var td = select.parentNode,
tr = td.parentNode,
tbody = tr.parentNode,
table = tbody.parentNode;
}
JS Fiddle演示。
假设您希望坚持使用纯JavaScript,并且在检索元素时不希望手动迭代DOM,下面是closest()
:的简单纯JavaScript实现
HTMLElement.prototype.closest = function (selector) {
var self = this.length ? this[0] : this;
while (self.tagName.toLowerCase() !== selector.toLowerCase() && self.tagName.toLowerCase() !== 'body') {
self = self.parentNode;
}
return self.tagName.toLowerCase() == 'body' ? this : self;
}
function updateData(select) {
var td = select.closest('td'),
tr = select.closest('tr'),
table = select.closest('table');
console.log(td, tr, table);
}
JS Fiddle演示。
David Thomas的答案可能是最好的答案。尽管如果您的页面上有jQuery,您也可以使用"closest()"函数。
$(select).closest('table')
这将考虑到自动添加tbody容器的浏览器和不添加的浏览器。
相关文章:
- 获取表格格式的 Javascript 输出
- 如何在表格内获取触摸旋转的值
- 获取 Google 表格脚本以跳过空行
- 谷歌表格-从硬盘获取文件名并插入表格-(模拟Excel's Appification.GetOpenFilena
- 获取表格行数据td并选择
- 获取表格单元格的 HTML 字符串
- 获取表格行的内容,并使用Jquery使用共享按钮在Facebook上发布
- 获取表格单元格的 ID
- Jquery获取表格gridview中所有选中行的值
- 如何从HTML中获取表格并用Python创建Excel工作表
- 通过Javascript获取表格单元格的坐标,并与不同的表格进行比较
- jQuery-获取表格单元格值
- 从单元格数据中获取表格
- 如何使文本区域与表格对齐并获取表格的高度
- JavaScript:获取表格单元格中的inputText值
- 单击复选框获取表格行id值
- 如何获取表格单元格中的值
- 获取表格单元格中浮点值的总和
- I'I’我试图获取表格中的信息,但没有成功
- Javascript获取表格行TR的单元格