javascript - CanvasJS 在函数中只显示一个图表(php、js)
问题描述
function timeDataToPointChart($dataPoints,$title,$xlabel,$ylabel,$chartID) {
?>
<script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
<script>
window.onload = function () {
var NameOfChart = "<?php echo $chartID; ?>"
window[NameOfChart] = new CanvasJS.Chart("chartContainer",
{
animationEnabled: true,
title:{
text: "<?php echo $title; ?>"
},
axisX:{
title: "<?php echo $xlabel; ?>",
valueFormatString: "MM/YYYY",
crosshair: {
enabled: true
}
},
axisY: {
title: "<?php echo $ylabel; ?>"
},
data: [
{
type: "line",
xValueType: "dateTime",
dataPoints:
<?php echo json_encode($dataPoints, JSON_NUMERIC_CHECK); ?>
}
]
});
window[NameOfChart].render();
function toggleDataSeries(e){
if (typeof(e.dataSeries.visible) === "undefined" || e.dataSeries.visible) {
e.dataSeries.visible = false;
}
else{
e.dataSeries.visible = true;
}
window[NameOfChart].render();
}
}
</script>
<div id="chartContainer" style="height: 370px; width: 650px;"></div>
<?php
}
?>
我使用这个 PHP 函数来生成我的画布图表。这很好用,但如果我在一个页面上调用该函数两次,则只显示一个图表。
控制台显示以下错误,但我不明白出了什么问题。
CanvasJS 命名空间已经存在。如果您同时加载图表和股票图表脚本,只需单独加载股票图表,因为它包含所有图表功能。
谢谢您的帮助。
解决方案
如canvasJs所述,我已经在我的Laravel App中相应地实现了代码,如下所示
@foreach($records as $record)
<div id="chartContainer{{$record->employeeRequisitionId}}" style="height: 270px; width: 100%;"></div>
@endforeach
@push('after_scripts')
<script>
window.onload = function () {
@foreach($records as $record)
const chart{{$record->employeeRequisitionId}} = new CanvasJS.Chart ( "chartContainer{{$record->employeeRequisitionId}}", {
animationEnabled: true,
theme: "light2",
title: {
text: "Requisition According Fiscal Year"
},
axisY: {
suffix: "%",
scaleBreaks: {
autoCalculate: false
}
},
data: [{
type: "column",
yValueFormatString: "#,##0\"%\"",
indexLabel: "{y}",
indexLabelPlacement: "inside",
indexLabelFontColor: "white",
dataPoints: {!! formatRequisitionAccordingFiscalYearData($record) !!}
}]
} );
@endforeach
@foreach($records as $record)
chart{{$record->employeeRequisitionId}}.render ();
@endforeach
}
</script>
@endpush
推荐阅读
- javascript - 查询所选选项的数据集不起作用
- flutter - 如何检测谷歌地图动画完成?
- android - 如何恢复定时器
- css - 能够使用 WebView (Cocoa, Swift) 中的元素拖动窗口
- javascript - Uncaught NotFoundError: Failed to execute 'replaceChild' on 'Node': 要替换的节点不是该节点的子节点
- azure - 如何备份 Azure 文件共享
- javascript - 在不同部分悬停时更改边框颜色
- c# - if else 语句简化以提高可读性
- android - Android MediaRecorder getMaxAmplitude 在 Pixel XL 上始终返回 0
- python - datetime.datetime.strptime 不正确的年份转换(使用“%y”格式)