嘿,我一直在做我的Web应用程序项目,我需要做一个图表,所以我在另一个文件中单独try 了一下,它工作得很好,但当我粘贴到index.html中时,我不知道为什么

一张饼图运行得很好,但条形图就不行了.我一直在try 更改版本,等等,但什么都不起作用.

<!DOCTYPE html>

<html lang="en">
<head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<title>˚₊‧ Welcome Page ‧₊˚</title>
<link href="indexstyle.css" rel="stylesheet" type="text/css"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/1.0.2/Chart.js"></script>
</head>
<body>
<h1>Welcome, <b>𐙚 ♡</b></h1>
<div class="topsection">
<div class="leftside">
<h2>Active Population</h2>
<ul id="activepopulation"><li onclick="populationfunction('AIs',2020)">AIs - F2020 (2)</li>
<li onclick="populationfunction('AIs',2021)">AIs - S2021 (2)</li>
<li onclick="populationfunction('CS',2020)">CS - F2020 (4)</li>
<li onclick="populationfunction('CS',2021)">CS - S2021 (3)</li>
<li onclick="populationfunction('DSA',2020)">DSA - F2020 (7)</li>
<li onclick="populationfunction('DSA',2021)">DSA - S2021 (4)</li>
<li onclick="populationfunction('ISM',2020)">ISM - F2020 (4)</li>
<li onclick="populationfunction('ISM',2021)">ISM - S2021 (3)</li>
<li onclick="populationfunction('SE',2020)">SE - F2020 (4)</li>
<li onclick="populationfunction('SE',2021)">SE - S2021 (4)</li></ul>
</div>
<div id="rightside">
<div id="piechart">
<canvas height="400" id="pieChart" width="400"></canvas>
<script>
var data = [
  {
      value: 4,
      color:"#fcedf5",
      highlight: "#e9cdfa",
      label: "AIs"
  },
  {
      value: 7,
      color: "#fad7e9",
      highlight: "#e9cdfa",
      label: "CS"
  },
  {
      value: 11,
      color: "#fcbdde",
      highlight: "#e9cdfa",
      label: "DSA"
  },
  {
      value: 7,
      color: "#ffb0d9",
      highlight: "#e9cdfa",
      label: "ISM"
  },
  {
      value: 8,
      color: "#fc9acd",
      highlight: "#e9cdfa",
      label: "SE"
  }];
var ctx = document.getElementById("pieChart").getContext("2d");
var myNewChart = new Chart(ctx).PolarArea(data);
</script>
</div>
</div>
</div>
<div class="bottomsection">
<div class="leftside">
<h2>Overall atendance</h2>
<ul id="attendance"><li onclick="populationfunction('AIs',2020)">AIs - F2020 (69%)</li>
<li onclick="populationfunction('AIs',2021)">AIs - S2021 (78%)</li>
<li onclick="populationfunction('CS',2020)">CS - F2020 (70%)</li>
<li onclick="populationfunction('CS',2021)">CS - S2021 (67%)</li>
<li onclick="populationfunction('DSA',2020)">DSA - F2020 (68%)</li>
<li onclick="populationfunction('DSA',2021)">DSA - S2021 (76%)</li>
<li onclick="populationfunction('ISM',2020)">ISM - F2020 (71%)</li>
<li onclick="populationfunction('ISM',2021)">ISM - S2021 (66%)</li>
<li onclick="populationfunction('SE',2020)">SE - F2020 (74%)</li>
<li onclick="populationfunction('SE',2021)">SE - S2021 (68%)</li></ul>
</div>
<div id="rightside">
<div id="barChart">
<canvas height="400" id="barChart" width="400"></canvas>
<script>
var data = {
    labels: ["AIs", "CS", "DSA", "ISM", "SE"],
        datasets: [{
            label: "2020 Intake",
            data: [0.69, 0.7, 0.68, 0.71, 0.74],
            backgroundColor: ["#fcedf5", "#fad7e9", "#fcbdde", "#ffb0d9", "#fc9acd"],
            borderColor: "#fff",
             borderWidth: 1
        },{
            label: "2021 Intake",
            data: [0.78, 0.67, 0.76, 0.71, 0.74],
            backgroundColor: ["#fcedf5", "#fad7e9", "#fcbdde", "#ffb0d9", "#fc9acd"],
            borderColor: "#fff",
            borderWidth: 1
        }]
    };

var ctx = document.getElementById("barChart").getContext("2d");
var myNewChart = new Chart(ctx, {
    type: 'bar',
    data: data,
        options: {
            indexAxis: 'y',
            scales: {
            x: {
                min: 0,
                max: 1,
                ticks: {
                callback: function(value) {
                return (value * 100) + "%";
                }}}}}
        });</script>
</div>
</div>
</div>
<p class="footer">Website last generation 10th Feb 2024 ₍ᐢ.  ̫.ᐢ₎ </p>
<script crossorigin="anonymous" integrity="sha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g==" referrerpolicy="no-referrer" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
    function populationfunction(population,year){
        $.ajax({
            url: "http://localhost:8001/students",
            type: "GET",
            data: {
                key1: population,
                key2: year
            },
            error: function(xhr, status, error){
                alert('Error: ' + xhr.status) 
            }
        })
    }
</script>
</body>
</html>

推荐答案

这就是我让它工作的方式:

<!DOCTYPE html>

<html lang="en">

<head>
  <meta charset="utf-8" />
  <meta content="width=device-width, initial-scale=1.0" name="viewport" />
  <title>˚₊‧ Welcome Page ‧₊˚</title>
  <link href="indexstyle.css" rel="stylesheet" type="text/css" />
  <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/1.0.2/Chart.js"></script>

  <!--<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>-->


</head>

<body>
  <h1>Welcome, <b>𐙚 ♡</b></h1>
  <div class="topsection">
    <div class="leftside">
      <h2>Active Population</h2>
      <ul id="activepopulation">
        <li onclick="populationfunction('AIs',2020)">AIs - F2020 (2)</li>
        <li onclick="populationfunction('AIs',2021)">AIs - S2021 (2)</li>
        <li onclick="populationfunction('CS',2020)">CS - F2020 (4)</li>
        <li onclick="populationfunction('CS',2021)">CS - S2021 (3)</li>
        <li onclick="populationfunction('DSA',2020)">DSA - F2020 (7)</li>
        <li onclick="populationfunction('DSA',2021)">DSA - S2021 (4)</li>
        <li onclick="populationfunction('ISM',2020)">ISM - F2020 (4)</li>
        <li onclick="populationfunction('ISM',2021)">ISM - S2021 (3)</li>
        <li onclick="populationfunction('SE',2020)">SE - F2020 (4)</li>
        <li onclick="populationfunction('SE',2021)">SE - S2021 (4)</li>
      </ul>
    </div>
    <div id="rightside">
      <div id="piechart">
        <canvas height="400" id="pieChartCanvas" width="400"></canvas>
        <script>
          var data = [{
              value: 4,
              color: "#fcedf5",
              highlight: "#e9cdfa",
              label: "AIs"
            },
            {
              value: 7,
              color: "#fad7e9",
              highlight: "#e9cdfa",
              label: "CS"
            },
            {
              value: 11,
              color: "#fcbdde",
              highlight: "#e9cdfa",
              label: "DSA"
            },
            {
              value: 7,
              color: "#ffb0d9",
              highlight: "#e9cdfa",
              label: "ISM"
            },
            {
              value: 8,
              color: "#fc9acd",
              highlight: "#e9cdfa",
              label: "SE"
            }
          ];
          var ctx = document.getElementById("pieChartCanvas").getContext("2d");
          var myNewChart = new Chart(ctx).PolarArea(data);
        </script>
      </div>
    </div>
  </div>
  <div class="bottomsection">
    <div class="leftside">
      <h2>Overall atendance</h2>
      <ul id="attendance">
        <li onclick="populationfunction('AIs',2020)">AIs - F2020 (69%)</li>
        <li onclick="populationfunction('AIs',2021)">AIs - S2021 (78%)</li>
        <li onclick="populationfunction('CS',2020)">CS - F2020 (70%)</li>
        <li onclick="populationfunction('CS',2021)">CS - S2021 (67%)</li>
        <li onclick="populationfunction('DSA',2020)">DSA - F2020 (68%)</li>
        <li onclick="populationfunction('DSA',2021)">DSA - S2021 (76%)</li>
        <li onclick="populationfunction('ISM',2020)">ISM - F2020 (71%)</li>
        <li onclick="populationfunction('ISM',2021)">ISM - S2021 (66%)</li>
        <li onclick="populationfunction('SE',2020)">SE - F2020 (74%)</li>
        <li onclick="populationfunction('SE',2021)">SE - S2021 (68%)</li>
      </ul>
    </div>
    <div id="rightside">
      <div id="barChart" style="height: auto; width: 500px;">
        <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/chart.js/dist/chart.umd.min.js"></script>
        <canvas id="barChartCanvas"></canvas>
        <script>
          var data = {
            labels: ["AIs", "CS", "DSA", "ISM", "SE"],
            datasets: [{
              label: "2020 Intake",
              data: [0.69, 0.7, 0.68, 0.71, 0.74],
              backgroundColor: ["#fcedf5", "#fad7e9", "#fcbdde", "#ffb0d9", "#fc9acd"],
              borderColor: "#fff",
              borderWidth: 1
            }, {
              label: "2021 Intake",
              data: [0.78, 0.67, 0.76, 0.71, 0.74],
              backgroundColor: ["#fcedf5", "#fad7e9", "#fcbdde", "#ffb0d9", "#fc9acd"],
              borderColor: "#fff",
              borderWidth: 1
            }]
          };

          var ctx = document.getElementById("barChartCanvas").getContext("2d");
          var myNewChart = new Chart(ctx, {
            type: 'bar',
            data: data,
            options: {
              indexAxis: 'y',
              scales: {
                x: {
                  min: 0,
                  max: 1,
                  ticks: {
                    callback: function(value) {
                      return (value * 100) + "%";
                    }
                  }
                }
              }
            }
          });
        </script>
      </div>
    </div>
  </div>
  <p class="footer">Website last generation 10th Feb 2024 ₍ᐢ. ̫.ᐢ₎ </p>
  <script crossorigin="anonymous" integrity="sha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g==" referrerpolicy="no-referrer" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
  <script>
    function populationfunction(population, year) {
      $.ajax({
        url: "http://localhost:8001/students",
        type: "GET",
        data: {
          key1: population,
          key2: year
        },
        error: function(xhr, status, error) {
          alert('Error: ' + xhr.status)
        }
      })
    }
  </script>
</body>

</html>

更改:

  1. 将barChart的id更改为barChartCanvas,因为getContext()在try 获取div元素的上下文时出错.(虽然它适用于第一个图表,但我也在那里进行了更改)

  2. 在将索引文件显示在barChartCanvas的正上方之前,添加了指向代码中提供的Java脚本文件的链接.我试着把它放到头上,但第一张图没有出现.我怀疑其中一个在某种程度上盖过了另一个,但不知道是如何做到的.

  3. 添加style="width:500px height:auto"到barChart,因为添加witdh和height到barChartCanvas不起作用(可能是由于其他库)

它不是完美的,但它是有效的,也许有了它,你就知道如何改进它.

Javascript相关问答推荐

将数据从strapi提取到next.js,但响应延迟API URL

Cookie中未保存会话数据

防止用户在selectizeInput中取消 Select 选项

我应该绑定不影响状态的函数吗?'

使用javascript将Plotly Expandable Sparkline转换为HighCharter Plot在bslib卡中

点击按钮一次有文本出现和褪色,而不是点击两次?(html,CSS,JavaScript)

当点击注册页面上的注册按钮时,邮箱重复

MathJax可以导入本地HTML文档使用的JS文件吗?

无法从NextJS组件传递函数作为参数'

如何从网站www.example.com获取表与Cheerio谷歌应用程序脚本

使用Java脚本导入gltf场景并创建边界框

如何将innerHTML字符串修剪为其中的特定元素?

如何在和IF语句中使用||和&;&;?

Next.js无法从外部本地主机获取图像

Reaction useState和useLoaderData的组合使用引发无限循环错误

顶点图使用组标签更新列之间的条宽

有没有办法通过使用不同数组中的值进行排序

当S点击按钮时,我如何才能改变它的样式?

ReactJS在类组件中更新上下文

使用重新 Select 和对象理解 Select 器备忘