2017-02-22 109 views
0

我创建了一个函数生成一个表:2维阵列未定义

function TabGen(sRow){ 
var sResultat = "<table border = 1 px solid black>"; 

for(var iCompt = 0; iCompt<arguments.length; iCompteur++) 
{ 
    sResultat += ("<td>" + arguments[iCompteur]+ "</td>") 
} 
sResultat += "</table>"; 
return sResultat; 
} 

然后创建其使用2 dimensionnal阵列打印出在屏幕上的表3行4列的功能。这:

function AfficheTab() { 

var aTab = [[0,0,0,1],[0,0,0,2],[0,0,0,3]]; 

for(var iCompt=0; iCompt < aTab.length; iCompt++) 
{ 
    return(aTab); 
} 
} 

为什么我会得到一个undefined?如果不对,我该如何解决这个问题?

打印功能:

(function(){ 

      var aLesDiv = document.querySelectorAll("#global div"); 

      aLesDiv[0].innerHTML = TabGen((AfficheTab(aTab))); 


     })(); 
+0

哪里是你? – Kornflexx

+0

您正在定义一个名为AfficheTab的函数,它不接收任何参数,并且传递'aTab'作为参数。这将无法工作。 –

+1

'“

”'不会是有效的HTML代码... – Mistalis

回答

0

arguments本身是一个数组。如果要使用数组,请使用参数[index] [arrayIterator] 在使用二维数组时,必须使用2个数组。

function TabGen(sRow){ 
    var sResultat = "<table border = 1 px solid black>"; 

    for(var iCompt = 0; iCompt<arguments[0].length; iCompteur++){ 
    sResultat += ("<td>" + arguments[0][iCompteur]+ "</td>") 
    } 
    sResultat += "</table>"; 
    return sResultat; 
    } 
0

看到你的函数,它返回什么?一排还是矩阵?矩阵...

function AfficheTab() { 

    var aTab = [[0,0,0,1],[0,0,0,2],[0,0,0,3]]; 

    for(var iCompt=0; iCompt < aTab.length; iCompt++)//useless loop 
    { 
     return(aTab); //the code stops in the first loop and return [[0,0,0,1],[0,0,0,2],[0,0,0,3]] 
    } 
} 

所以你TabGen可以通过做处理所有:

function TabGen(aTab) { 
    aTab.forEach((row) => { 
     row.forEach((cell) => { 
     //Do something with your row values (cell) 
     }); 
    }); 
    return false;//return your return stuff 
} 

我想你想有一个表,所以......

function TabGen(aTab) { 
    var html = []; 

    html.push('<table border="1">'); 

    aTab.forEach((row) => { 
     html.push('<tr>'); 

     row.forEach((cell) => { 

     html.push('<td>',cell,'</td>'); 

     }); 

     html.push('</tr>'); 
    }); 

    html.push('</table>'); 

    return html.join(''); 
}