JavaScript获取完整的第二列 [英] Javascript get entire 2nd column

查看:24
本文介绍了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。特别是如果桌子很大的话。它的速度要快得多。以下是凯利·诺顿关于这个主题的一篇短文:

这篇关于JavaScript获取完整的第二列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆