0

需要:我想将表中的数据转换为逗号分隔值。

问题:一个表格单元格可能有另一个表格。(例如,第 1 行,第 3 单元包含一个表格)该脚本需要为嵌套表格运行并且只捕获该列一次。在这里它捕获了两次“Col 3”。嵌套表的数量未知。它应该是一个通用脚本。

谢谢你。

我的 HTML 文件:

<html>
 <head>
  <script src="http://code.jquery.com/jquery-1.4.4.min.js" type="text/javascript"></script> 
 <script src="jquery.table2csv.0.1.1.min.js" type="text/javascript"></script> 
 <script type="text/javascript">
 jQuery(function() {
  jQuery("#tableone").table2csv({
   callback: function (csv) {
    //alert(csv);
   }
  });
 });
</script>
</head>
<body>
 <table id="tableone" style="width:100%;">
  <tbody>
   <tr>
    <td>
     <div >
      Col 1
     </div>
    </td>
    <td >
     <div >
      Col 2
     </div>
    </td>
    <td >
     <div >
      <table >
       <tbody>
        <tr>
         <td >
          Col 3
         </td>
        </tr>
       </tbody>
      </table>
     </div>
    </td>
   </tr>
   <tr >
    <td >
     <div >
      Data in Col 1
     </div>
    </td>
    <td >
     <div >
      Data in Col 2
     </div>
    </td>
    <td >
     <div >
      Data in Col 3
     </div>
    </td>
   </tr>
  </tbody>
 </table>
 </body>
</html>

jquery.table2csv.0.1.1.min.js

(function($)
 {$.fn.table2csv=function(options)
  {
   var defaults=
   {
    delimiter:",",callback:function(csv)
    {
     return csv;
    } 
   };
   var settings=$.extend(defaults,options);
   return this.each(function()
   {
    var name=$(this).find("caption").text();
    var csv="";

    $(this).find("td").each(function()
    {
     csv+="\""+$(this).text().replace(/(\")/gim,"\\\"\\\"")+"\""+",";
     alert(csv);
    })  
    csv=csv.replace(/\,$/gim,"");
    settings.callback(csv,name);
   });

  }
 })(jQuery);
4

2 回答 2

1

您应该重写 table2csv 脚本;您可以使用 $('tr').children('td') 来确保获取给定行的单元格,而不是使用 $().find('td') 来定位 <td>s。

请注意,网络上的随机 <table> 可能包含 <th> <tbody> <tfoot> 和其他语义内容。

于 2010-11-25T04:15:57.310 回答
0

在包含 $('tr').children('td') 之后我们得到的 o/p

"col1","col2","col3","col3","col1 中的数据","col2 中的数据","col3 中的数据" "col1","col2","col3","col3"," col1 中的数据","col2 中的数据","col3 中的数据" "col1","col2","col3","col3","col1 中的数据","col2 中的数据","col3 中的数据"

但输出应该是“col1”、“col2”、“col3”、“col1 中的数据”、“col2 中的数据”、“col3 中的数据”

于 2010-11-25T06:28:12.873 回答