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获取完整的第二列


- Fetch API 如何获取响应体? 2022-01-01
- 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01
- addEventListener 在 IE 11 中不起作用 2022-01-01
- 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06
- Flexslider 箭头未正确显示 2022-01-01
- Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01
- 失败的 Canvas 360 jquery 插件 2022-01-01
- Css:将嵌套元素定位在父元素边界之外一点 2022-09-07
- 400或500级别的HTTP响应 2022-01-01
- CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01