Arhn - архитектура программирования

Не удается прочитать тип свойства неопределенного highcharts highstock

У меня есть четыре графика highstock "Сравнить несколько серий" в одном представлении. Иногда они загружаются все хорошо, но иногда случайный не загружается и выдает ошибку: "Не удается прочитать тип свойства undefined".

Вот мой код: http://pastebin.com/3He5ahzd

Я понятия не имею, что я делаю неправильно.


  • Как вы загружаете файл js в свой html-документ? Обычно такие ошибки возникают из-за того, что вещи загружаются не по порядку. Например, вы пытаетесь добавить диаграмму в div, которого еще не существует. 26.01.2017
  • Привет, скрипт находится в конце основного раздела перед функцией: ‹script src=code.highcharts.com/stock/highstock.js›‹/script› ‹script src=code.highcharts.com/stock/modules/exporting.js›‹/› ‹script type=text/javascript› 26.01.2017

Ответы:


1

Это потому, что вы неправильно загружаете ряды для графика.

Код для воспроизведения ошибки. Живой пример

var series = [];
series[1] = {
  data: [1,2,3]
};
Highcharts.chart('container', {
    series: series
});

Ошибка вызвана массивом серий, который равен length = 2, но первый элемент не определен. В вашем коде это вызвано некорректным использованием ajax-запросов. Диаграмма может быть создана до того, как первый запрос ajax заполнит переменную серии. Вы должны вложить обратные вызовы или использовать другие методы для предотвращения гонки ajax-запросов.

        var seriesOptionsmaxload = [];
        $.getJSON('/test/statistics/5/list?parameter=maxLoad&type=wats', function (max) {
            seriesOptionsmaxload[0] = {
                name: 'Maksymalne obciążenie',
                color: '#ff0000',
                data: max
            };

          $.getJSON('/test/statistics/5/list?parameter=maxLoad&type=perKg', function (max) {
            seriesOptionsmaxload[1] = {
                name: 'W/kg',
                color: '#085fbc',
                data: max
            };
            Highcharts.stockChart('maxLoad', {
            ...
            });

          });
26.01.2017
  • Хорошо, я использую блок, когда и затем, когда получаю firstJson, получаю secondJson, затем создаю диаграмму, которая работает, спасибо! 27.01.2017

  • 2

    Я ударил это 2-й раз, и теперь я знаю, что вызывает это.

    Когда ваши графические данные имеют ряд данных, подобных этому:

    series: [1, 2, null, 3, 4]
    

    OR

    series: [1, 2, undefined, 3, 4]
    

    Он выдаст эту ошибку, потому что highstock.src.js показывает, что highstock перебирает каждый элемент в массиве и проверяет свойство типа следующим образом:

    i = seriesOptions && seriesOptions.length;
    while (!value && i--) {
      klass = seriesTypes[seriesOptions[i].type]; // ERROR THROWN HERE
      if (klass && klass.prototype[key]) {
        value = true;
      }
    }
    

    Чтобы предотвратить эту ошибку, вы можете:

    (1) удалить все не объекты из вашего массива

    OR

    (2) использовать альтернативный формат серии следующим образом:

    series: [{
      data: [1, 2, undefined, 3, 4]
    }]
    

    что позволит избежать этой ошибки.

    29.01.2019
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..