首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对象-对象中的对象-这些对象的数组

对象-对象中的对象-这些对象的数组
EN

Stack Overflow用户
提问于 2011-05-21 04:39:17
回答 2查看 139关注 0票数 2

我是javascript的新手,所以让我在前面先说一句。

我经常访问的一个网站在一个表格中有大约50个项目,并提供了有关该项目的详细信息。每个表格行包含几个td单元格。有些行的东西类型是相似的,比如USB驱动器或其他什么。我想要捕获每一行,这样我就可以对它们进行分组和重新排序,以满足我的口味。

我有这个对象:

代码语言:javascript
复制
function vnlItemOnPage(){
  this.Category = "unknown";
  this.ItemClass = "vnlDefaultClass";
  this.ItemBlock = {};
}

这表示一行。

我一直在尝试解决的是如何捕获html < tr>stuff< /tr>块并将其保存到this.ItemBlock中。

这部分很简单:

代码语言:javascript
复制
vnlItemOnPage.ItemBlock = element.getElementByClassName('className')[0]

这看起来很简单。我是不是遗漏了什么?

这部分我被卡住了:

会有50个,所以我需要一个vnlItemOnPage数组?

代码语言:javascript
复制
vnlAllItems = ???

var vnlAllItems = [vnlItemOnPage]?

还有,我该如何添加到数组和从数组中删除?我可能不会从数组中删除,如果这很复杂,那就别费心了。

一旦我捕获了< tr> html,我就可以将它附加到一个表元素中,如下所示:

代码语言:javascript
复制
myTable.appendChild(vnlAllItems[0].ItemBlock);

对,是这样?

如果你认为我从错误的方向来处理这个问题,我愿意接受任何建议。性能并不是一个大问题--至少现在是这样。稍后,我可能会尝试将几百个项目的几页合并在一起。

感谢您的帮助!

编辑

也许问题的第二部分是如此基础,以至于很难相信我不知道答案。

该数组可以是:var vnlAllItems = []

然后它就是: var row1 = new vnlItemOnPage;vnlAllItems.push(row1);var row2 = new vnlItemOnPage;row2.ItemBlock = element.getElementByClassName('className');

我想结束这个问题,但我讨厌在没有处理数组的内容的情况下这样做。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-21 04:50:04

JQuery是你的朋友。

这将为您提供所需表体中第一行的内部HTML:

代码语言:javascript
复制
var rowHtml = $('table#id-of-desired-table tbody tr:first').html() ;

要获得外部超文本标记语言,您需要一个jQuery扩展方法:

代码语言:javascript
复制
jQuery.fn.outerHTML = function() {
  return $('<div>').append( this.eq(0).clone() ).html();
};

用法很简单:

代码语言:javascript
复制
var rowHtml = $('table#id-of-desired-table tbody tr:first').outerHtml() ;

享受吧!

票数 1
EN

Stack Overflow用户

发布于 2011-05-21 06:29:56

不确定这是否是你想要的,但是如果我想操作表行,我会存储:

  • 行的整个html <td>1</td>...<td>n</td>作为字符串,这样我就可以快速地为每一行重新构造行
  • 存储实际的单元格值[1, ..., n],这样我就可以对值(

)进行一些操作

要获取html格式的行,可以使用以下命令:

代码语言:javascript
复制
var rowHtml = element.getElementByClassName('className')[0].innerHTML;

要获取单元格值的数组,您可以使用:

代码语言:javascript
复制
var cells = [];
var cellElements = element.getElementByClassName('className')[0].cells;
for(var i=0;i<cellElements.length;i++) {
    cells.push(cellElements[i].innerText);
}  

因此,存储所有这些内容的对象将如下所示:

代码语言:javascript
复制
function vnlItemOnPage(){
  this.Category = "unknown";
  this.ItemClass = "vnlDefaultClass";
  this.RowHtml = "";
  this.RowCells = [];
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6077349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档