我是javascript的新手,所以让我在前面先说一句。
我经常访问的一个网站在一个表格中有大约50个项目,并提供了有关该项目的详细信息。每个表格行包含几个td单元格。有些行的东西类型是相似的,比如USB驱动器或其他什么。我想要捕获每一行,这样我就可以对它们进行分组和重新排序,以满足我的口味。
我有这个对象:
function vnlItemOnPage(){
this.Category = "unknown";
this.ItemClass = "vnlDefaultClass";
this.ItemBlock = {};
}这表示一行。
我一直在尝试解决的是如何捕获html < tr>stuff< /tr>块并将其保存到this.ItemBlock中。
这部分很简单:
vnlItemOnPage.ItemBlock = element.getElementByClassName('className')[0]这看起来很简单。我是不是遗漏了什么?
这部分我被卡住了:
会有50个,所以我需要一个vnlItemOnPage数组?
vnlAllItems = ???
var vnlAllItems = [vnlItemOnPage]?还有,我该如何添加到数组和从数组中删除?我可能不会从数组中删除,如果这很复杂,那就别费心了。
一旦我捕获了< tr> html,我就可以将它附加到一个表元素中,如下所示:
myTable.appendChild(vnlAllItems[0].ItemBlock);对,是这样?
如果你认为我从错误的方向来处理这个问题,我愿意接受任何建议。性能并不是一个大问题--至少现在是这样。稍后,我可能会尝试将几百个项目的几页合并在一起。
感谢您的帮助!
编辑
也许问题的第二部分是如此基础,以至于很难相信我不知道答案。
该数组可以是:var vnlAllItems = []
然后它就是: var row1 = new vnlItemOnPage;vnlAllItems.push(row1);var row2 = new vnlItemOnPage;row2.ItemBlock = element.getElementByClassName('className');
我想结束这个问题,但我讨厌在没有处理数组的内容的情况下这样做。
发布于 2011-05-21 04:50:04
JQuery是你的朋友。
这将为您提供所需表体中第一行的内部HTML:
var rowHtml = $('table#id-of-desired-table tbody tr:first').html() ;要获得外部超文本标记语言,您需要一个jQuery扩展方法:
jQuery.fn.outerHTML = function() {
return $('<div>').append( this.eq(0).clone() ).html();
};用法很简单:
var rowHtml = $('table#id-of-desired-table tbody tr:first').outerHtml() ;享受吧!
发布于 2011-05-21 06:29:56
不确定这是否是你想要的,但是如果我想操作表行,我会存储:
<td>1</td>...<td>n</td>作为字符串,这样我就可以快速地为每一行重新构造行[1, ..., n],这样我就可以对值()进行一些操作
要获取html格式的行,可以使用以下命令:
var rowHtml = element.getElementByClassName('className')[0].innerHTML;要获取单元格值的数组,您可以使用:
var cells = [];
var cellElements = element.getElementByClassName('className')[0].cells;
for(var i=0;i<cellElements.length;i++) {
cells.push(cellElements[i].innerText);
} 因此,存储所有这些内容的对象将如下所示:
function vnlItemOnPage(){
this.Category = "unknown";
this.ItemClass = "vnlDefaultClass";
this.RowHtml = "";
this.RowCells = [];
}https://stackoverflow.com/questions/6077349
复制相似问题