2017-02-22 24 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); 
} 
} 

Почему я получаю неопределенный? Если это неправильно, как мне решить эту проблему?

Функция печати:

(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] Поскольку вы используете 2D-массив, вам нужно использовать 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(''); 
}