タブ区切りの文字列をhtmlテーブルに変換するためにjQueryでjavascriptを使用しようとしています。
入力文字列では、行は で区切られ<br/>
、列は で区切られていますtabs
。
これが私がこれまでに持っているものです:
$(function(){
$('div.jstable').each(function(){
var text = $(this).html();
var rows = text.split(/<br>/i);
var htmlString = "<table class='display dataTable'>"
var startTbody = true;
for(i = 0; i< rows.length; i++){
// build header section
if (i == 0){
htmlString += '<thead>';
}else {
if (startTbody){
htmlString += '<tbody>';
startTbody = false;
}
}
htmlString += '<tr>';
var row = rows[i];
var columns = row.split('\t');
// build columns
for (j = 0; j < columns.length; j++ ){
if (i == 0){
htmlString += '<th>' + columns[j] + '</th>';
}else {
htmlString += '<td>' + columns[j] + '</td>';
}
}
htmlString += '</tr>';
if (i == 0){
htmlString += '</thead>'
} else {
if (i == rows.length - 1){
htmlString += '</tbody>'
}
}
}
htmlString += '</table>';
$(this).html(htmlString);
})
});
そして、ここに入力テキストがあります:
<div class="jstable" style="float: left">
col1 col2 col3<br />asda fd dfs<br />mmmm ffff ssss
</div>
残念ながら、IE8/7 では、jquery .html() 関数によって返されるテキストのすべてのタブがスペースに置き換えられています。
IE9 は問題なく、現在のバージョンの Firefox と Chrome も問題なく動作します。
何か案は?