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

tableDataDOM ノードを抽出して操作できるようにする文字列があると仮定します。

解析を避けるために、この文字列を一時的な 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);
      }
   }
}

この場合、すべてのテーブルのすべてのデータを一度に 1 行ずつ単一の配列にプッシュしたことに注意してください。

于 2013-07-16T22:38:26.107 に答える