Почему не отображается содержимое API? - PullRequest
1 голос
/ 17 июня 2019

Я пытаюсь отобразить содержимое API, но по какой-то причине я получаю сообщение об ошибке в консоли, которое говорит Uncaught (in promise) TypeError: Cannot read property 'appendChild' of null, что для меня не имеет смысла, потому что я установил на innerHTML = <p>${this.items[i]}</p>.

Что я делаю не так и как я могу это исправить?Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

Вот мой HTML

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>

<div class="baseball">
    <h1>test</h1>
</div>

<script type="application/javascript" src="index.js"></script>
<script type="text/javascript">
    window.addEventListener("load", function() {
        console.log("document is loaded");

        var baseballStats = new BaseballStats();

        baseballStats.init("https://statsapi.mlb.com/api/v1/people/660670/stats?stats=byDateRange&season=2018&group=hitting&startDate=&endDate=&leagueListId=mlb_milb", true);
    });
</script>
</body>
</html>

Вот мой JavaScript

class BaseballStats {
  constructor() {
    this.totalItems = 0;
    this.list = document.querySelector("baseball");
  }

  init(url, bool) {
    this.bool = bool;

    var that = this;

    console.log(url);

    fetch(url)
      .then(resp => resp.json())
      .then(data => {
        console.log(data.stats);

        that.data = data;

        if (this.bool) {
          that.items = that.data.stats;
          this.totalItems = that.items.length;

          console.log("about to loop");

          for (var i = 0; i < this.totalItems; i++) {
            var listNode = document.createElement("LI");

            listNode.innerHTML = `<p>${this.items[i]}</p>`;
            console.log("did it reach here");

            this.list.appendChild(listNode);
          }
        }
      });
  }
}

Ответы [ 2 ]

1 голос
/ 17 июня 2019

Ваша проблема в том, что член list в BaseballStats имеет значение null.Это потому, что вы неправильно используете document.querySelector - он выбирается так же, как CSS, поэтому для выбора элемента с классом вам нужно использовать селектор . - https://www.w3schools.com/cssref/css_selectors.asp.
, который вы выбираете для 'baseball' однако это означает, что он пытается найти элемент с именем тега <baseball>.Измените это на '.baseball', и оно будет работать

1 голос
/ 17 июня 2019

Попробуйте console.log списка переменных.Вы увидите, что это ноль.Вы рассматриваете эту переменную как объект, но содержимое переменной равно нулю.

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