Функция не работает, если у нее есть параметр - PullRequest
0 голосов
/ 29 апреля 2018

После запроса данных JSON я запускаю их через такую ​​функцию

request.onload = function() {
  var mainData = request.response;
  loadNavbar(mainData);
}


function loadNavbar(jsonObj) {
	length = jsonObj.catagories.length;

	for (var i = 0 ; i < length; i++) {
	list = document.createElement("li");
	span = document.createElement("span");

	itemName = mainData.catagories[i].catName;

	span.innerHTML = itemName;

	list.appendChild(span);
	nav.appendChild(list);

	console.log(i)
	}
}

ошибка возврата веб-страницы:

main.js:21 Uncaught TypeError: Cannot read property 'length' of undefined
    at loadNavbar (main.js:21)
    at XMLHttpRequest.request.onload (main.js:12)

Но после того, как я изменил это на:

request.onload = function() {
  var mainData = request.response;
  loadNavbar();
}


function loadNavbar() {
	length = mainData.catagories.length;

	for (var i = 0 ; i < length; i++) {
	list = document.createElement("li");
	span = document.createElement("span");

	itemName = mainData.catagories[i].catName;

	span.innerHTML = itemName;

	list.appendChild(span);
	nav.appendChild(list);

	console.log(i)
	}
}

Это работает соответственно. Могу ли я знать, что я делаю неправильно в первом фрагменте?

1 Ответ

0 голосов
/ 29 апреля 2018

Я почти уверен, что объект, который вы передаете функции, не содержит массив с именем catagories. Я предполагаю, что у вас есть опечатка, и вместо этого она должна называться categories.

Однако, дополнительная информация может быть полезна. Например, содержимое объекта mainData.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...