In Webflow, why does a custom chart from the Highchart library only display in one item in a collection list, while the rest have a gap and the chart is not shown?

Published on
September 22, 2023

When creating a custom chart using the Highcharts library in Webflow, you may encounter a situation where the chart displays correctly in one item of a collection list, but in the rest of the items, there is a gap and the chart is not shown. This issue occurs because Webflow's CMS collection lists load dynamically, and the Highcharts library needs a specific DOM element to be present before it can render the chart.

To resolve this issue, you can follow these steps:

  1. Ensure unique IDs for each chart container: Make sure that each item in the collection list has a unique identifier (ID) associated with its chart container. You can set this ID using a dynamic field from the CMS collection.

  2. Use dynamic data to set the chart data: If your chart data is coming from the CMS collection, you need to use dynamic data bindings to populate the chart with the appropriate data. Make sure that the correct data is being passed to each chart container.

  3. Initialize Highcharts after the DOM is ready: The Highcharts library needs the DOM to be completely ready before it can render the chart. To achieve this, you can use the $(window).on("load", function()) event listener in the embed code where you initialize the Highcharts.

Here is an example of how the embed code might look like:

<script>  $(window).on("load", function() {    // Loop through each chart container and render the chart    $(".chart-container").each(function() {      var chartData = JSON.parse($(this).attr("data-chart-data"));      // Use Highcharts library to render the chart      Highcharts.chart($(this).attr("id"), chartData);    });  });</script>
  1. Check for any conflicting JavaScript: If you have other JavaScript code on your page that may interfere with the rendering of the charts, make sure to resolve any conflicts that might arise. One common issue is a conflict with another JavaScript library that uses the same $ symbol.

By following these steps, you should be able to resolve the issue where the custom chart from the Highcharts library only displays in one item in a collection list while the rest have a gap and the chart is not shown. Remember to always test your implementation and make adjustments as necessary.

Additional Questions:

  1. How do I create a custom chart using the Highcharts library in Webflow?
  2. What are the advantages of using the Highcharts library for creating charts in Webflow?
  3. Can I customize the Highcharts appearance in Webflow?