Javascript 获取整个第二列

标签 javascript cells

我到处寻找这个问题的解决方案,但没有任何效果。我已成功拉出第一列,但无法拉出第二列。以下代码成功拉取了整个第一列。

我将 .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 非常相似(一)。还要注意大写“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> ,他们不应该,你也可以考虑使用 textContentinnerText .特别是如果 table 很大。这是一个更快。这是 Kelly Norton 关于这个主题的一篇短文:

关于Javascript 获取整个第二列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22097155/

相关文章:

javascript - 使用 Yeoman 生成器复制文件不起作用

javafx - 如何仅通过鼠标使用 javafx 在表格 View 中选择多个单元格?

Matlab:将值添加到初始化的嵌套结构单元中

javascript - 为什么 ng-class 指令在我的自定义指令之后被编译

javascript - : ReactJS 子组件没有设置从父组件传过来的初始值

uitableview - MonoTouch 如何为带有静态单元格的 UITableViewController 实现 RowSelected

FireMonkey 中的 Delphi XE4 stringgrid 选择单元

excel - VBA代码过滤一列,然后填写另一列中可见单元格的公式

javascript - jsSHA、CryptoJS 和 OpenSSL 库给出不同的结果

javascript - 在 Javascript : Change of pattern 中从经典继承切换到原型(prototype)继承