Javascript函数的多种用法


Multiple usage of Javascript function

我在JS中得到了一些代码,我在php脚本中使用了这些代码。(基于图表)

$licznik=0;
    foreach ($all as $key => $row) {
                                      $imiona[$licznik]=$row['imie'];
                                      $nazwiska[$licznik]=$row['nazwisko'];
                                      $tak[$licznik]=$row['tak'];
                                      $nie[$licznik]=$row['nie'];
                                      $licznik++;
                                    }

    $wynik.='<div>
      <canvas id="'.$team.'">
      </canvas>
      </div>
      <br><hr>';
   $wynik.='<script>
  var barChartData = {
    labels : ["'.wypiszimiona($imiona,$nazwiska,$licznik).'], //radni
    datasets : [
      { //głosy na nie
        fillColor : "#BA0606",
      strokeColor : "#FF0808",
        highlightFill: "rgba(220,220,220,0.75)",
        highlightStroke: "rgba(220,220,220,1)",
        data : ['.wypisznie($nie,$licznik).']
      },
      { //głosy na tak
        fillColor : "#23BA06",
        strokeColor : "#30F70A",
        highlightFill : "rgba(151,187,205,0.75)",
        highlightStroke : "rgba(151,187,205,1)",
        data : ['.wypisztak($tak,$licznik).']
      }
    ]
  };
  window.onload = function(){
    var ctx = document.getElementById("'.$team.'").getContext("2d");
    window.myBar = new Chart(ctx).StackedBar(barChartData, {
      responsive : true
    });
      };
  </script>';

它只渲染最后一个画布,其他画布没有渲染(但JS代码是正确的(在源代码中)。我不知道怎么了。我不擅长JS:(

根据您提供的少量信息,我假设您正在复制和粘贴带有不同php变量的js代码。每次你这样做,你添加的代码告诉客户

window.onload = function(){
    var ctx = document.getElementById("'.$team.'").getContext("2d");
    window.myBar = new Chart(ctx).StackedBar(barChartData, {
      responsive : true
    });

如果您多次执行此操作,则会覆盖window.onload,并且只会进行最后一次重写,这意味着只会将最后一个画布绘制到.

您需要用双引号关闭(并在其中一些字符串中打开)JS字符串。有几行缺少它们:

...labels : ["'.wypiszimiona($imiona,$nazwiska,$licznik).'"]...
...data : ["'.wypisznie($nie,$licznik).'"]...
...data : ["'.wypisztak($tak,$licznik).'"]...

我可能错过了一些。