我创建了一个函数生成表:
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维数组的函数,在屏幕上打印出一个包含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);
}
}
为什么我得到一个未定义的?如果是错的,我应该如何解决这个问题?
打印功能:
(function (){
var aLesDiv = document.querySelectorAll("#global div");
aLesDiv[0].innerHTML = TabGen((AfficheTab(aTab)));
}) ();
答案 0 :(得分:0)
arguments
本身就是一个数组。如果要使用数组,请使用参数[index] [arrayIterator]
在使用2D数组时,必须使用2个arrayIterators。
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;
}
答案 1 :(得分: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( '' );
}