Создание диаграммы в соответствии с выбранными параметрами

У меня есть html-страница с полем выбора. Я кодирую его в файле JQuery, так что когда выбранный выбор является «футболом», он сравнивает json-данные в jQuery и генерирует диаграмму. Однако, если я выберу «фильм», он покажет ошибку.

Но я не могу ответить на этот вопрос, когда выбор изменится.

это мой html-код:

<title>Pie chart</title>
    
</head>
<body>

Select your category :

<div id="container" style="min-width: 400px; height: 400px; margin: 0 auto">
</div> </body>

Это мой файл jQuery с встроенным json:

$(function() {
    var json = {
        "data": [
                     {
                         "cid": "football",
                         "id": "/en/chelsea_fc",
                         "topic": "Chelsea F.C.",
                         "audience": [
                             {
                                 "userid": "100003914111287",
                                 "information": [
                                     {
                                         "category": "Athlete",
                                         "source": "Didier Drogba"
                                     },
                                     {
                                         "category": "Athlete",
                                         "source": "Frank Lampard"
                                     },
                                     {
                                         "category": "Professional sports team",
                                         "source": "Chelsea Football Club"
                                     },
                                     {
                                         "category": "favorite_teams",
                                         "source": "Chelsea Football Club"
                                     }
                                 ]
                             },
                             {
                                 "userid": "100003914111287",
                                 "information": [
                                     {
                                         "category": "Athlete",
                                         "source": "Didier Drogba"
                                     },
                                     {
                                         "category": "Athlete",
                                         "source": "Frank Lampard"
                                     },
                                     {
                                         "category": "Professional sports team",
                                         "source": "Chelsea Football Club"
                                     },
                                     {
                                         "category": "favorite_teams",
                                         "source": "Chelsea Football Club"
                                     }
                                 ]
                             }
                         ],
                         "type": "/soccer/football_team"
                     },
                     {
                         "id": "/en/manchester_united_fc",
                         "topic": "Manchester United F.C.",
                         "audience": [
                             {
                                 "information": [
                                     {
                                         "category": "Athlete",
                                         "source": "Ryan Giggs"
                                     },
                                     {
                                         "category": "Professional sports team",
                                         "source": "Manchester United"
                                     },
                                     {
                                         "category": "favorite_teams",
                                         "source": "Manchester United"
                                     }
                                 ],
                                 "userid": "100003921730958"
                             }
                         ],
                         "type": "/soccer/football_team"
                     }
                 ]
    };

Затем я создаю диаграмму:

     $("#selection").on('change', function(){
  //var e = document.getElementById("selection");
        var id =$(this).val();
        if(id = json.data[0].cid) {
        console.log(id)
        $.each(json.data, function (i, v) {
        pts.push([v.topic, v.audience.length]);
        });
        }

        else
        alert("Wrong data");





    //Radialize the colors
    Highcharts.getOptions().colors = $.map(Highcharts.getOptions().colors, function (color) {
        return {
            radialGradient: { cx: 0.5, cy: 0.3, r: 0.7 },
            stops: [
            [0, color],
            [1, Highcharts.Color(color).brighten(-0.3).get('rgb')]//darken
    ]
        };
    });

    var chart;
    $(document).ready(function() {

        /*var e = document.getElementById("selection");
        var id = e.options[e.selectedIndex].value;
        console.log(id);

        if (id = json.data[0].cid) {

        $.each(json.data, function (i, v) {
        pts.push([v.topic, v.audience.length]);*/
            chart = new Highcharts.Chart({
                chart: {
                    renderTo: 'container',
                    plotBackgroundColor: null,
                    plotBorderWidth: null,
                    plotShadow: false
                },
                title: {
                    text: 'Facebook like'
                },
                tooltip: {
                    pointFormat: '{series.name}: {point.percentage}%',
                    percentageDecimals: 0
                }


            ,
                plotOptions: {
                    pie: {
                        allowPointSelect: true,
                        cursor: 'pointer',
                        point: {
                            events: {
                                click: function (event) {
                                    //var personame =" ";
                                    var id = "10150616324193820";
                                    for (var i = 0; i < jsonFB.user1.length; i++) {
                                        for (var k = 0; k < json.data.length; k++) {
                                            for (var j = 0; j < json.data[k].audience.length; j++) {


                                                if (jsonFB.user1[i].id = json.data[k].audience[j].userid) {
                                                    var personname = jsonFB.user1[i].name;

                                                    var id = jsonFB.user1[i].id;



                                                }

                                                else {

                                                    alert("Error!");

                                                }

                                            }


                                        }

                                        alert("Person who like " + this.name + " are " + personname);
                                        var ans = confirm("Do you want to view this person profile?");
                                        if (ans)
                                            window.location = "http://www.facebook.com/people/@/" + id;


                                    }
                                }
                            }
                        },
                        showInLegend: true,
                        dataLabels: {
                            enabled: true,
                            color: '#000000',
                            connectorColor: '#000000',

                            formatter: function() {
                                return '' + this.point.name + ': ' + Math.round(this.percentage) + '%';
                            }

                        }
                    }
                },

                series: [{
                    type: 'pie',
                    name: 'Likes',
                    data: pts

                }]
            });


    });


});
0
nl ja de

1 ответы

onclick is not the event you are interested in. You must use onchange instead:

Надеюсь, поможет,

0
добавлено
Я просто понимаю, что вы используете jQuery для подключения слушателя к событию «change». Почему он не работает? Ошибка JS? Ничего не произошло? Не ожидаемые результаты?
добавлено автор Esteban Aliverti, источник
Функция, которую вы зарегистрировали для события «change», даже вызывается? Вы пытались отлаживать?
добавлено автор Esteban Aliverti, источник
Я изменил, но он все еще не работает :(
добавлено автор Derrick, источник
Ничего не случилось.
добавлено автор Derrick, источник
Неа. Я пытался. Но он не звонил.
добавлено автор Derrick, источник
JavaScript Jobs — чат
JavaScript Jobs — чат
8 336 участник(ов)

JavaScript Jobs — чат для поиска работы и людей Правила оформления: https://teletype.in/@telegram-ru/r1WQe5F1m См. также: @mobile_jobs, @devops_jobs, @nodejs_jobs, @react_js, @angular_ru, @js_ru

JavaScript.ru
JavaScript.ru
7 932 участник(ов)

Сообщество сайта JavaScript.ru в Slack.

pro.js
pro.js
4 675 участник(ов)

Про JavaScript и NodeJS Invite: https://t.me/joinchat/Be4rsT5Rsgq30DHutjxXgA Правила: http://telegra.ph/ru-chat-rules-06-19 Вакансии только с ЗП, не чаще раза в неделю.

Верстка сайтов HTML/CSS/JS/PHP
Верстка сайтов HTML/CSS/JS/PHP
3 439 участник(ов)

Правила группы: напишите !rules в чате. Группа Вк: vk.com/web_structure Freelancer: @web_fl Веб Дизайн: @dev_design Маркетолог: @topmarkening Автор: @M_Boroda

JavaScript — русскоговорящее сообщество
JavaScript — русскоговорящее сообщество
3 269 участник(ов)

Рекомендуем сразу отключить уведомления Правила: https://rudevs.network/ByaMH6un7 См. также: @js_noobs_ru, @nodejs_ru, @typescript_ru, @react_js, @electron_ru Вакансии и поиск работы: @javascript_jobs

JavaScript Noobs — сообщество новичков
JavaScript Noobs — сообщество новичков
2 484 участник(ов)

Чат для новичков

Чат — Типичный Верстальщик
Чат — Типичный Верстальщик
1 080 участник(ов)

Основной канал: @tpverstak Обратная связь: @annblok Все ссылки на соц.сети проекта: http://taplink.cc/tpverstak ПРАВИЛА ЧАТА — https://teletype.in/@annblok/BygPgC3E7

javascript_ru
javascript_ru
915 участник(ов)

Сообщество любителей самого популярного языка программирования в мире. Чат основан в 2009 году. Логи: https://goo.gl/9EOeM7 Поддержка бота: @chat_linker (ссылка на репу внутри) Вам будут интересны @frontend_ru и @css_ru

jsChat
jsChat
603 участник(ов)

Чат посвященный программированию на языке javaScript Перед отправкой ссылки на Ваш контент посоветуйтесь с админом Все ссылки удаляются ботом автоматически

JavaScript for Zombies Chat
JavaScript for Zombies Chat
492 участник(ов)

Чат про JavaScript для настоящих zombie! Вход строго по приглашениям! Ссылка для строгих приглашений: https://t.me/joinchat/AAMBHz3Uyr0tuZ7VaB029g

All That JS
All That JS
417 участник(ов)

JS на русском

Веб-Технологи: UI/UX, Вёрстка, Фронтенд
Веб-Технологи: UI/UX, Вёрстка, Фронтенд
167 участник(ов)

Всё про веб-дизайн и вёрстку. А также: HTML, CSS, флекс и бутстрапы, шаблонизаторы, препроцессоры, методологии, аглифаеры, улучшаторы и обфускаторы. Обсуждаем темы юзабилити, устраиваем А/В тесты лендингов, и проводим аудит.

DTP :: @DTPublish
DTP :: @DTPublish
147 участник(ов)

Обсуждаемые темы: полиграфия, препресс, верстка, дизайн, иллюстрации, скрипты, плагины. Канал - @DTPublishing