Javascript get entire 2nd column(JavaScript获取完整的第二列)
问题描述
我到处寻找这个问题的解决方案,但都没有奏效。我已经成功地拉出了第一列,但我拉不到第二列。下面的代码成功地拉出了整个第一列。我将.cells
更改为[1]
,它不会拉动任何内容。我试过:nth-child(1)
,但也不起作用。我觉得我错过了一些非常琐碎的东西。非常感谢您的帮助。
function F0416()
{
var tab = document.getElementById('partTable');
var l = tab.rows.length;
var s = '';
for ( var i = 0; i < l; i++ )
{
var tr = tab.rows[i];
var cll = tr.cells[0];
s += ' ' + cll.innerText;
}
document.write(s);
}
推荐答案
首先。切勿将l
(小写el)用作变量。它与1
(1)非常相似。还要注意大写字母"o"和大写字母"i"。小写的"o"通常也不受欢迎。
它现在看起来可能还可以,但当你在6个月或一年后回顾它时,可能就不是那么多了。还要考虑到其他人可能需要阅读和修改您的代码。
说得够多了。
您的代码应该可以工作。如果您没有获得预期的结果,则问题出在其他地方。
使其可重复使用
但是,为了简化代码并使其更易于重用,您可以为表的id以及所需的列添加一个参数。生成的函数可能如下所示,带有一些额外的检查:
function getColumn(table_id, col) {
var tab = document.getElementById(table_id);
var n = tab.rows.length;
var i, s = null, tr, td;
// First check that col is not less then 0
if (col < 0) {
return null;
}
for (i = 0; i < n; i++) {
tr = tab.rows[i];
if (tr.cells.length > col) { // Check that cell exists before you try
td = tr.cells[col]; // to access it.
s += ' ' + td.innerText;
} // Here you could say else { return null; } if you want it to fail
// when requested column is out of bounds. It depends.
}
return s;
}
var txt = getColumn('partTable', 2);
检查故障
将null
作为s
的初始值,将返回结果与null
进行比较,判断是否成功。
if (txt === null) {
// Report error, or at least not work on "txt".
}
简化
一旦您真正理解了它,您就可以根据需要将循环简化为如下所示:
for (i = 0; i < n; i++) {
if (tab.rows[i].cells.length > col) {
s += ' ' + tab.rows[i].cells[col].innerText;
}
}
使用数组:
如果要逐个使用单元格,最好的方法是返回一个数组而不是一个字符串。然后,您可以循环该数组,或者,如果您希望将其作为字符串,则只需使用所需的分隔符将其联接。这很可能是最有用和可重复使用的函数。
// In function:
arr = [];
// In loop:
arr.push(tab.rows[i].cells[col].innerText);
var cells = getColumn("the_id", 2);
var text = cells.join(' ');
演示:
Fiddle demo with array
速度。
如果您的表格单元格不包含任何<script>
或<style>
(它们不应该包含),您还可以考虑使用textContent
而不是innerText
。特别是如果桌子很大的话。它的速度要快得多。以下是凯利·诺顿关于这个主题的一篇短文:
- INNERTEXT VS. TEXTCONTENT
这篇关于JavaScript获取完整的第二列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:JavaScript获取完整的第二列
基础教程推荐
- Karma-Jasmine:如何正确监视 Modal? 2022-01-01
- 我什么时候应该在导入时使用方括号 2022-01-01
- 动态更新多个选择框 2022-01-01
- 当用户滚动离开时如何暂停 youtube 嵌入 2022-01-01
- 角度Apollo设置WatchQuery结果为可用变量 2022-01-01
- 响应更改 div 大小保持纵横比 2022-01-01
- 在for循环中使用setTimeout 2022-01-01
- 悬停时滑动输入并停留几秒钟 2022-01-01
- 在 JS 中获取客户端时区(不是 GMT 偏移量) 2022-01-01
- 有没有办法使用OpenLayers更改OpenStreetMap中某些要素 2022-09-06