当前位置: 首页 > 知识库问答 >
问题:

chartjs.org仅在一页中显示的图表

查飞星
2023-03-14

我的图表在同一页上工作良好,但当我把不同的页面,只有第一个工作良好。

例如:page1.html

<div class="wrapper">
  <canvas id="pieChart" width="200px" height="200px"></canvas> 
</div>

page2.html

 <div class="wrapper">
  <canvas id="lineChart" width="200px" height="200px"></canvas> 
 </div>

JS


    //page1.html
    //piechart
    var pieVar = {
        type: 'pie',
        data: {
        labels: ["Yes", "No"],
        datasets: [
            {
                data: [60, 40],
                backgroundColor: [
                    "#FF6384",
                    "#36A2EB"
                ],
                hoverBackgroundColor: [
                    "#FF6384",
                    "#36A2EB"
                ]
            }
        ]
    },
        options: {
            scales: {
                xAxes: [{
                    display: true
                }]
            }
        }
    }

    //page2.html
    //line chart
    var lineVar = {
        type: 'line',
        data: {
        labels: ["January", "February", "March", "April", "May", "June", "July"],
        datasets: [
            {
                label: "My First dataset",
                fill: true,
                lineTension: 0.2,
                backgroundColor: "rgba(75,192,192,0.4)",
                borderColor: "rgba(75,192,192,1)",
                borderCapStyle: 'butt',
                borderDash: [],
                borderDashOffset: 0.0,
                borderJoinStyle: 'miter',
                pointBorderColor: "rgba(75,192,192,1)",
                pointBackgroundColor: "#fff",
                pointBorderWidth: 1,
                pointHoverRadius: 10,
                pointHoverBackgroundColor: "rgba(255,0,0,1)",
                pointHoverBorderColor: "rgba(255,0,0,1)",
                pointHoverBorderWidth: 2,
                pointRadius: 1,
                pointHitRadius: 10,
                data: [65, 59, 80, 81, 56, 55, 40],
                spanGaps: false,
            }
        ]
    },
        options: {
            scales: {
                xAxes: [{
                    display: true
                }]
            }
        }
    }

    window.onload = function(){
        //piechart
        var pieCtx =  document.getElementById("pieChart");
        var myPieChart = new Chart(pieCtx, pieVar);
        //linechart
        var lineCtx =  document.getElementById("lineChart");
        var myLineChart = new Chart(lineCtx, lineVar);
    };

在这个代码中,因为它是同一个页面,所以Pen工作得很好。码本

共有1个答案

施彦
2023-03-14

这听起来像是在两个页面中加载了相同的JavaScript文件(包含两个图表的配置)。问题是,由于您使用的是一个带有两个图表定义的JavaScript文件,您试图创建的在html中不存在的图表会抛出错误,因为您在一个空上下文中传递。

window.onload = function(){
  //piechart (this will be null on page2.html)
  var pieCtx = document.getElementById("pieChart"); 

  // You are passing in a null pieCtx on page2.html because there is no element with an id = "pieChart"
  var myPieChart = new Chart(pieCtx, pieVar); 

  //linechart (this will be null on page1.html)
  var lineCtx = document.getElementById("lineChart"); 

  // You are passing in a null lineCtx on page1.html because there is no element with an id = "lineChart"
  var myLineChart = new Chart(lineCtx, lineVar); 
};

您应该将JavaScript文件拆分为两个文件,以便第一个页面只包含第一个图表的定义,第二个页面只包含第二个图表的定义。或者,添加一些条件来防止尝试创建空图表(像这样)。

window.onload = function(){
  //piechart (this will be null on page2.html)
  var pieCtx = document.getElementById("pieChart"); 

  if (pieChart) {
    var myPieChart = new Chart(pieCtx, pieVar); 
  }

  //linechart (this will be null on page1.html)
  var lineCtx = document.getElementById("lineChart"); 

  if (lineChart) {
    var myLineChart = new Chart(lineCtx, lineVar); 
  }
};
 类似资料:
  • 问题内容: 假设我想要一种只显示HTML中250x250像素的图像的中心50x50像素的方法。我怎样才能做到这一点。另外,有没有办法对css:url()引用执行此操作? 我知道CSS中的 clip ,但这似乎仅在与绝对定位一起使用时才起作用。 问题答案: 一种方法是在容器(td,div,span等)中将要显示的图像设置为背景,然后调整背景位置以获取所需的精灵。

  • 我正在PyGame中制作一个太空入侵者游戏,但当我尝试绘制投射物时,它会覆盖/更改主精灵(平面)。如何解决此问题,以便在屏幕上显示多个精灵?

  • 我正在使用chart.js在一个页面上显示多个折线图。然而,只有最后一张图表显示,尽管我称之为“canvas1”和“canvas2”。有些地方一定有冲突,我试过很多东西,但没有任何乐趣。以下是两个图表,仅显示最后一个: 图一 图二: 你的帮助将不胜感激,已经打扰我一段时间了! 提前谢谢

  • 我试图显示与Html文件位于同一文件夹中的静态图像,但似乎无法获得正确显示的正确路径。我正在开发的应用程序还包括一个从数据库获取数据的java后端,我使用HTML和javascript在前端显示它,整个应用程序作为插件在Web服务器上运行。图像和Html文件都位于此处: Web应用程序的URL路径是: <代码>https://staging.com/jira/secure/SchedulerAct

  • 当我在wordpress页面上显示一些产品时,我想显示一个简短的描述链接到一个相关的pdf(理想情况下使用pdf图标作为链接) 我已经设法通过使用以下代码来显示简短的描述-但是我如何在已经添加到产品中的元数据中添加一些东西(元数据:pdf_link)-它是一个. pdf文件的网址 添加动作(“购物”后加上“购物”后加上“购物”后加上“购物”后加上“购物”后加上“购物”后加上“购物”后加上“购物”后

  • 问题内容: 我正在iframe上工作,我需要在宽度大约为300px,高度为150px的iframe中显示页面的某些部分(例如右上角)。 例: 说我希望把一个 IFRAME 的 **www.mywebsite.com/portfolio.php 在页面上,但有IFRAME大小,只显示“ 投资组合运动 在”部分 右上角** 。 我该如何实现? 谢谢。 问题答案: 一个让你与工作完整的窗口。执行所需操作