我在 JS 中得到了一些代码,我在 php 脚本中使用了这些代码。(基于 Chartjs)
$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>';
它只渲染最后一个 Canvas ,另一个不渲染(但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,并且只有最后一次重写才会发生,这意味着只会绘制最后一个 Canvas 。
关于javascript - Javascript函数的多种使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36226756/