Dynamic chart in EJ2 JavaScript Chart control

8 May 20233 minutes to read

By using html button, you can add the chart dynamically when click the button.

To add the chart dynamically through button click, follow the given steps:

Step 1:

Initially create the html button.

Then create chart inside of button onClick function. Now click the button charts will render based on click count.

The following code sample demonstrates the output.

let count = 0;
document.getElementById('btn').onclick = () => {

    //Create div element dynamically and append to DOM
    var chartEle = document.createElement('div');
    chartEle.id = 'chartContainer' + count;
    document.getElementsByTagName('body')[0].appendChild(chartEle);

    //Created chart here
    var chart = new ej.charts.Chart({
        series: [{
            type: 'Line', xName: 'x', width: 2, marker: { visible: true },
            yName: 'y', name: 'Germany',
            dataSource: [{ x: 1, y: 21 }, { x: 2, y: 24 }, { x: 3, y: 36 },
            { x: 4, y: 38 }, { x: 5, y: 54 }, { x: 6, y: 57 }, { x: 7, y: 70 }],
        }],
        title: 'Inflation - Consumer Price', tooltip: { enable: true }, height: '400', width: '800'
    });
    chart.appendTo('#' + chartEle.id);
    count++;
}
<!DOCTYPE html><html lang="en"><head>
    <title>EJ2 Animation</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="Typescript UI Controls">
    <meta name="author" content="Syncfusion">
    <link href="index.css" rel="stylesheet">
    
    
<script src="https://cdn.syncfusion.com/ej2/25.1.35/dist/ej2.min.js" type="text/javascript"></script>
<script src="https://cdn.syncfusion.com/ej2/syncfusion-helper.js" type ="text/javascript"></script>
</head>

<body>
    
      
    <div id="container">
        <div id="element"></div>
    </div>
    <button id="btn">Add Chart</button>


<script>
var ele = document.getElementById('container');
if(ele) {
  ele.style.visibility = "visible";
}   
      </script>
<script src="index.js" type="text/javascript"></script>
</body></html>