簡體   English   中英

嘗試在導出過程中從數據表中剝離HTML

[英]Trying to strip html from Datatables during export

我使用的數據表與此處的示例完全相同。 因此,要導出數據,我使用了一個允許我在excel中用換行符更改<br>的功能。 我用這個:

return column === 5 ? data.replace( /<br\s*\/?>/ig, "\n"): data;

但是,當我嘗試添加第二個更改時,我想對其他列進行更改,這是行不通的……我嘗試在第一個工作替換項的正下方添加此更改:

return column === 1 ? data.replace( /<.*?>/ig, ""): data;

在首先將<br>更改為換行符后,我希望基本上除去所有html標記。 但是就像我現在的代碼一樣, 第二部分在導出過程中只是被忽略了。有人知道我在做什么錯嗎?

這是我的完整代碼:

var fixNewLine = {
    exportOptions: {
        format: {
            body: function ( data, column, row ) {
                return column === 5 ? data.replace( /<br\s*\/?>/ig, "\n"): data;
                return column === 1 ? data.replace( /<.*?>/ig, ""): data;
            }
        }
    }
};

var t2e = $('#table2excel').DataTable({
    dom: 'Bfrtip',
        buttons:[
            $.extend( true, {}, fixNewLine, {
                extend: 'excelHtml5'
            } ),
            'pdf', 'print', 'copy', 'csv' //, 'excel'
        ]

});

您不能在代碼中有多個return語句,只有第一個將被執行,請嘗試以下操作:

var fixNewLine = {
    exportOptions: {
        format: {
            body: function ( data, column, row ) {
                if (column === 5) {
                    data = data.replace(/<br\s*\/?>/ig, "\n");
                }
                return column === 1 ? data.replace(/<.*?>/ig, ""): data;
            }
        }
    }
};

一個單獨處理每個列的switch語句對我來說確實很好。 在下面查看我的用法...

var fixNewLine = { 
    exportOptions: { 
        format: { 
            body: function ( data, row, column, node ) { 
                 switch(column){
                    case 1 :  return column === 1 ? data.replace(/<.*?>/ig, "") : data; break;
                    case 2 :  return column === 2 ? data.replace(/<.*?>/ig, "") : data; break;
                    case 3 :  return column === 3 ? data.replace(/<.*?>/ig, "") : data; break;
                    case 4 :  return column === 4 ? data.replace(/<.*?>/ig, "") : data; break;
                    case 5 :  return column === 5 ? data.replace(/<.*?>/ig, "") : data; break;
                    case 6 :  return column === 6 ? data.replace(/<.*?>/ig, "") : data; break; 
                    default : return data; break;
                }
            } 
        } 
    }
};  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM