2013-07-16 47 views
1

我從CKEditor獲取純文本中的一堆html數據。它包含表結構和一堆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數據?

感謝您的幫助!

+0

你可以顯示你用來設置'tableData'的代碼嗎? – Jacob

+0

@jacob它真的只是我從CKEditor獲得的純文本。 var tableData = CKEDITOR.instances [id] .getData() – FlyingCat

回答

2

我假設你有一個tableData字符串,你想從中提取DOM節點來處理它們。

爲避免解析,您可以將此字符串插入臨時DOM元素。

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

// Retrieve all tables. 
var tables = div.getElementsByTagName('table'); 
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); 
     } 
    } 
} 

請注意,在這種情況下,我已將所有表中的所有數據一次一行地推送到單個數組中。