1

我有一堆从 CKEditor 获得的纯文本 html 数据。它包含表结构和一堆 html 标记。

我想知道是否有办法只提取表结构和 td 数据。

纯文本可能类似于

first table....bunch more texts here...

<table>
   <tr><td>  data1  </td></tr>
   <tr><td>  data2  </td></tr>
   <tr><td>  data3  </td></tr>
</table>

end of table. test data here...

<table>
   <tr><td>  data4  </td></tr>
   <tr><td>  data5  </td></tr>
   <tr><td>  data6  </td></tr>
</table>

end of second table and bunch more texts....

我努力了

//tableData contains everything the user type in CKEditor.
var table = tableData.getElementsByTagName ('table');

但我刚刚意识到这些文本不在dom。它们只是我从中提取的纯文本CKEditor

如何提取这些table数据?

谢谢您的帮助!

4

2 回答 2

2

我假设你有一个tableData字符串,你想从中提取 DOM 节点以便能够处理它们。

为避免解析,您可以将此字符串插入到临时 DOM 元素中。

var temp = document.createElement( 'div' );
div.innerHTML = tableData;

// Retrieve all tables.
var tables = div.getElementsByTagName( 'table' );
于 2013-07-17T07:53:32.220 回答
0

您需要类似以下内容的内容,它将所有表拉入一个数组,然后对其进行迭代。这是一个小提琴,它也显示了这一点http://jsfiddle.net/M5nMY/。我在这里假设 tabledata 是包含表的 DOM 元素的 id。

var tableData = document.getElementById('tabledata');
var tables = tableData.getElementsByTagName('table');
var data = new Array();
for(var k = 0; k < tables.length; k++){
   var table = tables[k];
   for(var i=0; i< table.rows.length; i++){
      var row = table.rows[i].cells;
      for(var j=0; j < row.length; j++){
        data.push(row[j].innerHTML);
      }
   }
}

请注意,在这种情况下,我已将所有表中的所有数据一次推送到一个数组中。

于 2013-07-16T22:38:26.107 回答