gpt4 book ai didi

Javascript 获取整个第二列

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:06:15 26 4
gpt4 key购买 nike

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

我将 .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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com