Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.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 重新刷新窗口大小_Javascript_Jquery_Canvas - Fatal编程技术网

Javascript 重新刷新窗口大小

Javascript 重新刷新窗口大小,javascript,jquery,canvas,Javascript,Jquery,Canvas,我有这个带有Chart.js和canvas元素的完整随机图条脚本 当我通过检查元素或测试脚本中的tablet/phone大小来调整窗口大小时,它不会调整大小(因为预期的css),并且会干扰我的检查过程。我尝试过让脚本在调整窗口大小时重新启动,但我无法让它工作,尝试了几种不同的方法 脚本: (function($) { $(document).ready(function(barChart) { (function() { var data = [], b

我有这个带有Chart.js和canvas元素的完整随机图条脚本

当我通过检查元素或测试脚本中的tablet/phone大小来调整窗口大小时,它不会调整大小(因为预期的css),并且会干扰我的检查过程。我尝试过让脚本在调整窗口大小时重新启动,但我无法让它工作,尝试了几种不同的方法

脚本:

(function($) {

  $(document).ready(function(barChart) {
    (function() {
      var data = [],
        barsCount = 24,
        labels = new Array(barsCount),
        updateDelayMax = 500,
        $id = function(id) {
          return document.getElementById(id);
        },
        random = function(max) {
          return Math.round(Math.random() * 100)
        },
        helpers = Chart.helpers;
      Chart.defaults.global.responsive = true;
      for (var i = barsCount - 1; i >= 0; i--) {
        data.push(Math.round(Math.random() * 100));
      };
      new Chart($id('header-random-bar-graph').getContext('2d')).Bar({
        labels: labels,
        datasets: [{
          fillColor: 'rgba(220,220,220,0.1)',
          data: data
        }]
      }, {
        showScale: false,
        barShowStroke: false,
        barValueSpacing: 1,
        showTooltips: false,
        onAnimationComplete: function() {
          var heroChart = this,
            timeout;
          this.options.onAnimationComplete = randomUpdate;
          this.options.animationEasing = 'easeOutQuint';
          randomUpdate();

          function randomUpdate() {
            heroChart.stop();
            clearTimeout(timeout);
            timeout = setTimeout(function() {
              var randomNumberOfBars = Math.floor(Math.random() * barsCount),
                i;
              for (i = randomNumberOfBars - 1; i >= 0; i--) {
                heroChart.datasets[0].bars[Math.floor(Math.random() * barsCount)].value = Math.round(Math.random() * 100);
              };
              heroChart.update();
            }, Math.random() * updateDelayMax);
          };
        }
      });
    })();
  });

})(jQuery);
我试着在结尾加上:

$(window).resize(barChart);
然后我在Chrome中得到控制台错误:“未定义条形图”


JSFIDLE:,但小提琴无法正确显示问题。

条形图
中定义了一些函数,您必须将其移动到比小提琴更高的位置2行

(function($) {

  $(document).ready(function(barChart) { 
    //barChart is only defined within this closure
    (function() {
      //your code...
    })();
    $(window).resize(barChart);
  });

})(jQuery);
编辑

如果我理解正确,那么您正在尝试调用您在
$(document.ready)上调用的方法,在调整窗口大小时再次调用该方法。对上述代码稍作修改即可:

(function($) {

  $(document).ready(function() { 
    //define a function to use it again as a handler
    function barChart() {
      //your code...
    });

    //execute the function
    barChart();

    //set function as resize event handler
    $(window).resize(barChart);
  });

})(jQuery);
顺便说一句:我认为你不需要

(function($) {...})(jQuery);
以及

$(document).ready(function() {...});

但我可能错了,这并不是你问题的一部分,所以,不管怎样:)

柱状图定义了更多的函数,你必须把它移到比小提琴更高的两行

(function($) {

  $(document).ready(function(barChart) { 
    //barChart is only defined within this closure
    (function() {
      //your code...
    })();
    $(window).resize(barChart);
  });

})(jQuery);
编辑

如果我理解正确,那么您正在尝试调用您在
$(document.ready)上调用的方法,在调整窗口大小时再次调用该方法。对上述代码稍作修改即可:

(function($) {

  $(document).ready(function() { 
    //define a function to use it again as a handler
    function barChart() {
      //your code...
    });

    //execute the function
    barChart();

    //set function as resize event handler
    $(window).resize(barChart);
  });

})(jQuery);
顺便说一句:我认为你不需要

(function($) {...})(jQuery);
以及

$(document).ready(function() {...});

但是我可能错了,这并不是你问题的一部分,所以,不管怎样:)

我按照你说的做了,当窗口调整大小时,它似乎仍然没有重新启动。我按照你说的做了,脚本可以工作,但在调整窗口大小时仍然不会重新启动。我按照你说的做了,并且在调整窗口大小时它似乎仍然不会重新启动。正如您所说,我已经完成了,脚本可以工作,但在调整窗口大小时仍然无法重新启动。