2015-11-23 144 views
2

我正嘗試在Javascript中使用表格。Javascript,Uncaught TypeError:無法讀取未定義的屬性「單元格」

我有一個函數來創建一個空表,

//This function will create an empty table of a length of vars+1 
//This function will create the header slots as well as empty data slots 
function empty_Table(){ 
     document.write("<table border=\"1\" id=\"myTable\" >"); 
     var my_Structure = steps_Structure(steps); 
     var vars = my_Structure[0].second.split(",");//This will create an array,str, of multiple variables 
     //first row 
     document.write("<TR>"); 
     for (var i = 0; i<vars.length+2; i+=2){ 
       document.write("<TH></TH>"); 
     } 
     document.write("</TR>"); 
     //second row 
     document.write("<TR>"); 
     for (var i = 0; i<vars.length+2; i+=2){ 
       document.write("<TD></TD>"); 
     } 
     document.write("</TR>"); 
     //third row 
     document.write("<TR>"); 
     for (var i = 0; i<vars.length+2; i+=2){ 
       document.write("<TD></TD>"); 
     } 
     document.write("</TR>"); 
     document.write("</Table>"); 
     return; 
} 

和功能修改該表,

//This function is to begin drawing the variable display table 
//This function should create a dynamic table that grows depending on the values in steps 
function draw_Table(){ 
     var my_Structure = steps_Structure(steps); 
     empty_Table(); 
     var myTable = document.getElementById('myTable'); 
     //draw first row 
     var vars = my_Structure[0].second.split(",");//This will create an array, of multiple variables 

     myTable.rows[0].cells[0].innerHTML = 'Variables:'; 
     //for (var i = 0; i<vars.length; i+=2){ 
       //document.write("<TH>",vars[i],"</TH>"); 
     //} 

     //draw second row 
     var pairs = my_Structure[step_Cur].second.split(",");                     
     myTable.rows[1].cells[0].innerHTML = 'Current Value:'; 
     //for (var i = 1; i<(pairs.length); i+=2){ 
       //document.write("<TD>",pairs[i],"</TD>"); 
     //} 
     //third row                          
     myTable.rows[2].cells[0].innerHTML = 'Last Value:'; 
} 

3線給我找麻煩

myTable.rows[1].cells[0].innerHTML = 'Variables:'; 
myTable.rows[2].cells[0].innerHTML = 'Current Value:'; 
myTable.rows[3].cells[0].innerHTML = 'Last Value:'; 

在鉻,我看到錯誤「未捕獲TypeError:無法設置屬性'innerHTML'未定義」,但不知道如何f ix它。

我不是一個JavaScript用戶 - 我剛剛被賦予一個任務來編寫一個工具來顯示解決某個功能的步驟 - 對此,我的javascript知識很少,並且正在認真地努力處理這個表格

它應該如何工作:給定變量列表及其值 構成一個3行的表格,列數與變量傳遞量相對應。

Variables:| a | b | c 
Current Val:| val1 | val2 | val3 
previous val:| val1 | val2 | val3 

在以前VAL顯示函數的前一步驟的值,當前VAL表示各功能的變量的當前值,和變量給出變量。

創建表格時變量和標題是常量,每次按下「下一個」/「後退」按鈕以顯示下一個/上一個步驟時,表格中的值將會改變。

感謝您提供任何幫助!

編輯:在這個偉大的社區的幫助下發現錯誤 - 未定義的錯誤的「單元格」是由錯誤的下標引起的,原始錯誤是由創建我的錯誤表引起的。在我實際添加數據之前,我關閉了<TR>

+1

我們需要知道myTable如何定義才能夠幫助您 – Erick

+0

我不確定您的意思? myTable在empty_Table()函數中定義 – nuclearmage

回答

3

一兩件事,我看到的是你沒有正確地構建您的表:

 //first row 
     document.write("<TR id=></TR>"); 
     for (var i = 0; i<vars.length+2; i+=2){ 
       document.write("<TH></TH>"); 
     } 

在這裏你創建一個行之後,你創建一個單元格。然後,當你得到表格行時,它是空的,這實際上是真的。

你需要的是這樣的:

document.write("<TR>"); 
for (var i = 0; i<vars.length+2; i+=2){ 
    document.write("<TH></TH>"); 
} 
document.write("</TR>"); 

這樣的錶行會的細胞。

讓我知道這是否對你有幫助。

+0

您發現了該錯誤!有了這個修補程序,並修復了我沒有注意到的下標,現在它似乎工作....非常感謝您花時間看這 – nuclearmage

相關問題