2017-04-14 18 views
0

我不明白爲什麼當我指定的列數少於行時,HTML表格不會生成。當我指定一定數量的列時,乘法表不起作用

var table2 = Array(10); 
for (var i = 0; i < table2.length; i++) { 

// If I change Array(5) to something like Array(10) it doesn't work 
table2[i] = Array(5); 
} 


var code = "<table cellpadding=\"15\" cellspacing=\"0\"><tr>" 

for (row = 1; row <= table2.length; row++) { 
    for (col = 1; col <= table2[col].length; col++) { 
    code += "<td>" + col * row + "</td>"; 
    } 
code += "</tr>"; 
}; 

document.getElementById('fart').innerHTML = code; 

鏈接:https://jsfiddle.net/pz4p9nff/

回答

1

的在你的代碼將解決你所面臨的問題,以下更正。

var table2 = Array(10); //Init the amount of rows in your table 
var code = "<table cellpadding=\"15\" cellspacing=\"0\">"; 

//Don't forget: arrays are zero based. Starting at 1 will skip row with index 0 
for (row = 0; row < table2.length; row++){ 

    //Initialize each row with a fixed amount of columns... 
    //no need to do this in a seperate loop 
    table2[row] = Array(5); 
    //Open each row properly 
    code += "<tr>"; 

    //Loop the columns of each row 
    for (col = 0; col < table2[row].length; col++){ 
    code += "<td>" + col*row + "</td>"; 
    } 

    code += "</tr>"; 
}; 

code += "</table>"; //Close your table properly 

document.getElementById('fart').innerHTML = code; 
+0

感謝您的評論解釋。我仍然不確定爲什麼<=沒有工作。 – Gregg

1

試試這個

var code = "<table cellpadding=\"15\" cellspacing=\"0\">" 

for (row = 1; row <= 10; row++) { 
    code += '<tr>'; 
    for (col = 1; col <= 5; col++) { 
     code += "<td>" + col * row + "</td>"; 
    } 
    code += "</tr>"; 
}; 

document.getElementById('fart').innerHTML = code; 
+1

咄,要簡單得多:)剛開始學習JavaScript,我試圖玩弄一個例子並沒有意識到我可以不顧一切的東西。謝謝! – Gregg

+0

不客氣。請點擊我的答案附近的複選框將答案標記爲已接受 – Aram810

1

你必須糾正你的代碼如下;

var table2 = Array(10); 
 
for (var i = 0; i < table2.length; i++){ 
 

 
// If I change Array(5) to something like Array(10) it doesn't work 
 
\t table2[i] = Array(10) 
 
} 
 
    
 

 
var code = "<table cellpadding=\"15\" cellspacing=\"0\"><tr>" 
 

 
for (row = 1; row < table2.length; row++){ // !!! use < not <= 
 
    for (col = 1; col < table2[row].length; col++){ // !!! use < not <= and table2[row] 
 
     code += "<td>" + col*row + "</td>"; 
 
    } 
 
    code += "</tr>"; 
 
    }; 
 
    
 
document.getElementById('fart').innerHTML = code;
<div id ="fart"> 
 

 
</div>

1

更新您的列互爲作用循環如下。

for (col =0; col < table2[row].length; col++) { 
    code += "<td>" + col * row + "</td>"; 
} 
0

您需要刪除<tr>標籤,當你初始化code

var code = "<table cellpadding=\"15\" cellspacing=\"0\">" 

row<tr>標籤應附加。 內部for循環的限制col應該是table2.[row-1].length。由於您使用row作爲價值變量,而不是指數,它的價值,因此從1開始,但股指通常會在開始從0

for (row = 1; row <= table2.length; row++){ 
    code += "<tr>"; 
    for (col = 1; col <= table2[row-1].length; col++){ 
     code += "<td>" + col * row + "</td>"; 
    } 
code += "</tr>"; 
};  

您還需要關閉</table>標籤。

code+="</table>"; 

更新https://jsfiddle.net/pz4p9nff/4/

相關問題