undefined добавляется к массиву

261
18 марта 2017, 02:23

Когда вывожу элементы подмассива в ячейки таблицы через цикл for, то первым выводится undefined, а потом уже все элементы: undefined Hello world Phrase 23 qwerty lorem

Сам код:

var arr = [ 
  ["Hello", "world", "Phrase", "23", "qwerty", "lorem"], 
  ["56", "wetrf", "random", "099", "world", "Phrase"], 
  ["23", "qwerty", "lorem", "56", "wetrf", "random"], 
  ["Hello", "wew", "Phrase", "23", "qwerty", "lorem"], 
  ["Bye", "world", "Element", "23", "qwerty", "lorem"] 
]; 
var table = document.getElementById('tab') 
var i = 0; 
 
function button() { 
  var el = document.createElement('tr'); 
  table.appendChild(el); 
  var row; 
  for (var j = 0; j < arr[i].length; j++) { 
    row += '<td>' + arr[i][j] + '</td>'; 
  } 
 
  el.innerHTML = row; 
 
}
<table id="tab"> </table> 
<input type="button" value="Кнопка" onclick="button()">

Из-за чего это может быть? Как сделать так, чтобы выводились только элементы, содержащиеся в подмассиве?

Answer 1

Проблема банальна.

Вы пишете:

var row;

Тут, в переменную записывается undefined, т.к. по дефолту не присвоено значение, и уже дальше к нему (к значению undefined) вы конкатенируете данные из цикла.

Решение: объявить переменную, как полагается, с ожидаемым типом:

var row = '';

P.S. Повторю свои слова из комментария:

Считаю, что нужно вам напомнить (или открыть секрет), что в браузере есть инструменты разработчика, и в частности такая волшебная штука, как отладчик (debugger). И вы можете воспользоваться им, и по шагам пройти все итерации и посмотреть какая переменная на каком этапе какое значение принимает. И тогда не придется на каждый чих создавать вопрос. Советую почитать что-то на эту тему и отлаживать свой код. Как пример: https://learn.javascript.ru/debugging-chrome

READ ALSO
Как работать с массивом в cookie на NodeJs

Как работать с массивом в cookie на NodeJs

Есть два запроса: /create /getlist В первом запросе я добавляю определенный элемент:

287
Не получается удалить элемент json JS

Не получается удалить элемент json JS

Есть строка, которая хранится в localstorage в формате json

332
Wordpress и localhost

Wordpress и localhost

Подскажите, пожалуйста, может ли быть такое, что код, написанный на AngularJS отлично работает на встроенном локальном сервере Webstorm, а при переносе...

275