2016-09-19 33 views
0

我有一个由外部软件自动生成的表格(我必须使用它并且不知道它是如何工作的)。更改DOM表中的文本

我在尝试将表datafld == "n0"中的任何项目从15HS01 15F24:HS632401.COUT改为15F24

我试图用这个代码:

// Get all the tables in the document. 
var doc_tables = document.all.tags("TABLE"); 
for (ii = 0; ii < doc_tables.length; ii++) 
{ 
// Process each table. 
FireZone(doc_tables(ii).id) 
} 


// Access the data table object (use the dataFld string) 
function FireZone(tableID) 
{ 
// Get the 'specified' table object. 
var table = eval("document.all." + tableID); 

// Skip the header rows and get to the data rows in table 
var nHeadRows = table.rows.length - table.all.tags("TBODY").length; 

// Iterate all rows in table.... 
if(table.rows.length > 0) 
{ 
    table 
    for (i=nHeadRows; i < table.rows.length; i++) 
    { 
     table(i).width = 1200; 
     // Iterate all cells in each row - 

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

      // Locate cells by "dataFld" - interested in "n0" binding 
      // Get the Cell value 
      for (k=0; k < table.rows(i).cells(j).children.length; k++) 
      { 
       if(table.rows(i).cells(j).children[k].dataFld == "n0") 
       { 
        var value = table.rows(i).cells(j).children[k].innerText; 
        if (value.search("15F") != -1) 
        { 
         table.rows(i).cells(j).children[k].innerText = value.substr(value.search("15F",5)); 
        } 
       } 
      } 
     } 
    } 
} 
} 

但出于某种原因,这代码似乎并没有做任何事情,但是也不它抛出一个错误。

与各行对应的HTML块看起来是这样的:

<TBODY> 

<TR> 

<TD style="FONT-FAMILY: Georgia, serif; COLOR: white" noWrap><SPAN dataFld=t0>9/16/2016 11:33:51 AM</SPAN></TD> 

<TD style="FONT-FAMILY: Georgia, serif; COLOR: white"><SPAN dataFld=n0>15HS01 15F24:HS632401.COUT</SPAN></TD> 

<TD style="FONT-FAMILY: Georgia, serif; COLOR: white" noWrap><SPAN dataFld=v0>0</SPAN></TD></TR></TBODY> 

剧本肯定是正在运行,所以任何帮助,将不胜感激。

回答

0

希望这有助于下手,我发现你的代码中的JavaScript错误

// Get all the tables in the document. 
 
var doc_tables = document.querySelectorAll("TABLE"); 
 

 
for (ii = 0; ii < doc_tables.length; ii++) 
 
{ 
 
    console.log(doc_tables[ii].getAttribute("id")) 
 
// Process each table. 
 
FireZone(doc_tables[ii]) 
 

 
} 
 

 

 
// Access the data table object (use the dataFld string) 
 
function FireZone(table) 
 
{ 
 
// Get the 'specified' table object. 
 
var table = eval(table); 
 

 
var tds = table.querySelectorAll("td"); 
 
// Iterate all rows in table.... 
 
if(tds.length > 0) 
 
{ 
 
    for (i=0; i < tds.length; i++) 
 
    { 
 
        var value = tds[i].innerText; 
 
        
 
        if (value.indexOf("15F") != -1) 
 
        { 
 
         var newValue = value.substr(value.indexOf("15F"),5); 
 
         console.log(newValue); 
 
         tds[i].innerText = value.substr(value.indexOf("15F",5)); 
 
        } 
 
    } 
 
} 
 
}
td {color:#000}
<table border="1"> 
 
<TBODY> 
 

 
<TR> 
 

 
<TD style="FONT-FAMILY: Georgia, serif; COLOR: white" noWrap><SPAN dataFld=t0>9/16/2016 11:33:51 AM</SPAN></TD> 
 

 
<TD style="FONT-FAMILY: Georgia, serif; COLOR: white"><SPAN dataFld=n0>15HS01 15F24:HS632401.COUT</SPAN></TD> 
 

 
<TD style="FONT-FAMILY: Georgia, serif; COLOR: white" noWrap><SPAN dataFld=v0>0</SPAN></TD></TR></TBODY> 
 
    </table>

+0

感谢您的评论,我收到一个错误说表不包含方法' querySelectorAll' –