Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chart.js-根据用户输入设置x轴_Javascript_Html_Charts_Chart.js - Fatal编程技术网

Javascript Chart.js-根据用户输入设置x轴

Javascript Chart.js-根据用户输入设置x轴,javascript,html,charts,chart.js,Javascript,Html,Charts,Chart.js,我是一个刚刚开始学习chart.js的初学者。有人能帮我理解为什么我的x轴标签在按下“生成图表”按钮后没有根据用户的输入进行调整吗?我觉得我所有的代码都是正确的。下面是我的代码 <td><input type="number" id="StartFreq"/></td> <td><input type="number" id="StopFreq"/></td> <

我是一个刚刚开始学习chart.js的初学者。有人能帮我理解为什么我的x轴标签在按下“生成图表”按钮后没有根据用户的输入进行调整吗?我觉得我所有的代码都是正确的。下面是我的代码

        <td><input type="number" id="StartFreq"/></td>
          <td><input type="number" id="StopFreq"/></td>
          <td><input type="number" id="XTick"/></td>

        </tr>
      </table>
      <button onclick="generateChart()"><strong>Generate Chart</strong></button>
    </section>

    <br>
    <br>
    <section>
      <canvas id="myChart"></canvas>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.js"></script>
      <script>
      let StartFreq = document.getElementById('StartFreq');
      let StopFreq = document.getElementById('StopFreq');
      let XTick = document.getElementById('XTick');
      let ctx = document.getElementById('myChart').getContext('2d');

      function generateLabels(){
        let xvals = [];
        for (let i = 0; i < 14; i++) {
          xvals.push(parseFloat(StartFreq.value) + parseFloat(XTick.value) * i )
        }
        return xvals

      }

      let chart = new Chart(ctx, {

      // The type of chart we want to create
      type: 'line',

      // The data for our dataset
      data: {
      labels: generateLabels(),
      datasets: [{
      label: 'R-TE10',
      data: [0, 10, 5, 2, 20, 30, 45]
      }]
      },

      // Configuration options go here
      options: {
        scales : {
          xAxes:[{
            ticks: {
              beginAtZero: true
            }
          }],
          yAxes : [{
            ticks : {
              beginAtZero : true,
              min : 0,
              max: 10
            }
          }]
        }

      }
      });
      function generateChart() {
        generateLabels();
        chart.update()
      }
      </script>
    </section>

生成图表


让StartFreq=document.getElementById('StartFreq'); 让StopFreq=document.getElementById('StopFreq'); 设XTick=document.getElementById('XTick'); 设ctx=document.getElementById('myChart').getContext('2d'); 函数generateLabels(){ 设xvals=[]; for(设i=0;i<14;i++){ xvals.push(parseFloat(StartFreq.value)+parseFloat(XTick.value)*i) } 返回xVAL } 让图表=新图表(ctx{ //我们要创建的图表类型 键入:“行”, //我们的数据集的数据 数据:{ 标签:generateLabels(), 数据集:[{ 标签:“R-TE10”, 数据:[0,10,5,2,20,30,45] }] }, //配置选项在这里 选项:{ 比例:{ xAxes:[{ 滴答声:{ 贝吉纳泽罗:是的 } }], 雅克斯:[{ 滴答声:{ 贝吉纳泽罗:是的, 分:0,, 最多:10 } }] } } }); 函数generateChart(){ 生成标号(); 图表更新() }

为了澄清,我希望StartFreq位于图表最左下角的刻度,而最右下角的刻度是停止频率。我希望每个刻度均匀分布,每个刻度都值Xtick输入值。我想在单击“生成图表”按钮时更新图表。

您的错误如下

要更新选项,请就地修改“选项”属性,或 支持传入新的选项对象

为了使更新生效,您需要对原始对象进行变异,而您没有这样做

只要这样做就能解决它

function generateChart() {
  generateLabels();
  chart.data.labels = generateLabels();
  chart.update();
}

或者更好的方法是,仅在单击“生成”时创建/显示图表