Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过javascript方法支持多表ID_Javascript_Html - Fatal编程技术网

通过javascript方法支持多表ID

通过javascript方法支持多表ID,javascript,html,Javascript,Html,我使用以下方法读取表中的标题名称并将其放入excel。任何人都可以让我知道如何修改此以支持多个具有标题信息和数据的表。 i、 e.如何修改以传递表id。“headers”是代码中“th”标记的id function write_headers_to_excel() { str=""; var myTableHead = document.getElementById('headers'); var rowCount = myTableHead.rows.length; var

我使用以下方法读取表中的标题名称并将其放入excel。任何人都可以让我知道如何修改此以支持多个具有标题信息和数据的表。 i、 e.如何修改以传递表id。“headers”是代码中“th”标记的id

function write_headers_to_excel() 
{
  str="";
  var myTableHead = document.getElementById('headers');
  var rowCount = myTableHead.rows.length;
  var colCount = myTableHead.getElementsByTagName("tr")[0].getElementsByTagName("th").length; 

  var ExcelApp = new ActiveXObject("Excel.Application");
  var ExcelSheet = new ActiveXObject("Excel.Sheet");
   ExcelSheet.Application.Visible = true;

  for(var i=0; i<rowCount; i++) 
  {   
   for(var j=0; j<colCount; j++) 
   {           
      str= myTableHead.getElementsByTagName("tr")[i].getElementsByTagName("th")   [j].innerHTML;
    ExcelSheet.ActiveSheet.Cells(i+1,j+1).Value = str;
}
 }
函数将标题写入excel()
{
str=“”;
var myTableHead=document.getElementById('headers');
var rowCount=myTableHead.rows.length;
var colCount=myTableHead.getElementsByTagName(“tr”)[0].getElementsByTagName(“th”).length;
var ExcelApp=新的ActiveXObject(“Excel.Application”);
var ExcelSheet=新的ActiveXObject(“Excel.Sheet”);
ExcelSheet.Application.Visible=true;

对于(var i=0;i您可以通过标记名获得所有tr元素

var rows = document.getElementsByTagName('tr');// get all rows of all tables 

 var table=0, TableRow=0;

        for (i = 0; i < rows.length; i++) {

            row = rows[i];

            if (row.parentNode.tagName != 'THEAD' && row.parentNode.tagName != 'thead') {
                  table=table+1;
               // do something here for headers
            } else if (row.parentNode.tagName != 'TBODY' && row.parentNode.tagName != 'tbody')        
               {
                TableRow=TableRow+1;
              //do something here for rows
            }

        }
var rows=document.getElementsByTagName('tr');//获取所有表的所有行
var table=0,TableRow=0;
对于(i=0;i
您的问题有点含糊不清,所以我在猜测您想要什么。假设您当前的函数按原样工作,您只需取出表ID的硬编码,并将其作为参数传入即可:

function write_headers_to_excel(tableID)  {
   var myTableHead = document.getElementById(tableID);
   // rest of your function as is
}
然后为每个表调用一次,尽管这样会为每个表创建一个新的ExcelSheet

如果想法是将所有表添加到同一个ExcelSheet中,那么您可以向函数传递一个表ID数组,如下所示。我保留了函数的基本结构,但将变量声明移出了循环(因为JavaScript在幕后就是这么做的),删除了您的
ExcellApp
变量,因为它未被使用,并将
getElementsByTagName
调用移出内部循环

write_headers_to_excel(["headers1","headers3","headers7","etc"]);

function write_headers_to_excel(tableIDs)  {
   var myTableHead,
       rowCount,
       cols,
       t,
       i,
       j,
       rowOffset = 1,
       ExcelSheet = new ActiveXObject("Excel.Sheet");

   ExcelSheet.Application.Visible = true;

   for (t=0; t < tableIDs.length; t++) {
      myTableHead = document.getElementById(tableIDs[t]);
      rowCount = myTableHead.rows.length;

      for(i=0; i<rowCount; i++) {
         cols = myTableHead.rows[i].getElementsByTagName("th");
         for(j=0; j < cols.length; j++) {
            ExcelSheet.ActiveSheet.Cells(i+rowOffset,j+1).Value = cols[j].innerHTML;
         }
      }
      rowOffset += rowCount;
   }
}
将标题写入excel([“headers1”、“headers3”、“headers7”、“etc]”);
函数将标题写入excel(TableID){
var myTableHead,
行数,
科尔斯,
T
我
J
rowOffset=1,
ExcelSheet=新的ActiveXObject(“Excel.Sheet”);
ExcelSheet.Application.Visible=true;
for(t=0;t对于(i=0;iI在我的html页面中有多个表。我想将每个表导出到excel文件。因此我使用了该函数。我的表的格式为..td….那么我如何修改代码以将tableid发送到该函数。您仍然不清楚是否要将多个表导出到单个excel我的第一个(简短)示例代码定义了函数上的一个参数,您可以通过传递一个字符串来调用该参数:
write\u headers\u to\u excel(“headers”);
-第二个大代码块已经有了一个传递字符串数组的示例。我需要每个表一个文件。在短代码中,u传递了tableId作为参数。没关系。但是如何使用table id获得AD和tbody标记的行长。在我的代码中,如果我只有一个表,我就是这样做的var myTableHead=document.getElementById('headers');var rowCount=myTableHead.rows.length;。现在,如果传递tableid,我该怎么做。在HTML中,在要处理的每个表上定义一个唯一的ID属性,然后为每个ID调用函数一次。您几乎已经做到了。。。