Построение графика с помощью CanvasJS в HTML из внешнего .JS-файл

#javascript #html #canvasjs

#javascript #HTML #canvasjs

Вопрос:

У меня есть этот рабочий javascript / HTML-код, который строит базовую линейную диаграмму с помощью CanvasJS для некоторых базовых тестовых данных. Смотрите ниже. Я не хочу использовать Google charts, потому что я пробовал это, и у Google charts есть утечки памяти, что делает Google charts более или менее бесполезным для меня.

 <!DOCTYPE HTML>
<html>
<head>  
<script>
window.onload = function () {

var chart = new CanvasJS.Chart("chartContainer", 
{
animationEnabled: false,
backgroundColor: "#000000", 
title:{ text: "Price chart for crypto currency: ", fontSize: 22, fontFamily: "arial", fontWeight: "lighter", 
fontColor: "white", horizontalAlign: "left"},
axisY:{ includeZero: false, tickColor: "white", lineColor: "white", 
labelFontColor: "white", gridColor: "white", gridThickness: 0.5},
axisX:{ minimum: 1, maximum: 5.1, interval: 1, tickColor: "white", 
lineColor: "white", labelFontColor: "white", gridColor: "white", gridThickness: 0.5}, 
data: [{type: "line", dataPoints: 
[
{ x: 1, y: 450 },
{ x: 2, y: 414},
{ x: 3, y: 520},
{ x: 4, y: 460 },
{ x: 5, y: 450 }
]
}]

});

chart.render();

}
</script>
</head>
<body>
<div id="chartContainer" style="width: 80%; height: 450px;"></div>
<script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
</body>
</html>  

Теперь я хочу извлечь основную функцию построения кода и поместить ее в функцию javascript с именем PlotData () во внешнем файле .js с именем plot.js который находится в той же папке, что и HTML-файл. Идея в конечном итоге заключается в вызове такой функции из HTML с данными в качестве параметра функции, подобного этому PlotData([{x: 1, y: 450}, {x: 2, y: 414} и т.д. и т.п. ]). Это сделает HTML-код менее сложным и более универсальным, что означает, что я могу использовать его и для других данных.

Я попытался сделать это ниже. Я еще не поместил данные в параметр функции, потому что код не работает. Я должен решать по одной проблеме за раз. Сначала запустите внешний код построения графика .js, а затем добавьте данные в качестве параметра функции построения графика.

 function PlotData() 
{
var chart = new CanvasJS.Chart("chartContainer", 
{
animationEnabled: false,
backgroundColor: "#000000", 
title:{ text: "Price chart for crypto currency: ", fontSize: 22, fontFamily: "arial", fontWeight: "lighter", 
fontColor: "white", horizontalAlign: "left"},
axisY:{ includeZero: false, tickColor: "white", lineColor: "white", 
labelFontColor: "white", gridColor: "white", gridThickness: 0.5},
axisX:{ minimum: 1, maximum: 5.1, interval: 1, tickColor: "white", 
lineColor: "white", labelFontColor: "white", gridColor: "white", gridThickness: 0.5}, 
data: [{type: "line", dataPoints: 
[
{ x: 1, y: 450 },
{ x: 2, y: 414},
{ x: 3, y: 520},
{ x: 4, y: 460 },
{ x: 5, y: 450 }
]
}]

});

chart.render();

}  
 <!DOCTYPE HTML>
<html>
<head>  
<script type="text/javascript" src='plot.js'> </script> 
<script>
window.onload = PlotData();  
</script>
</head>

<body>
<div id="chartContainer" style="width: 80%; height: 450px;"></div>
<script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
</body>
</html>  

Я знаю, как успешно добавить данные в параметр функции xxx (a) из внешнего файла .js с именем test3, расположенного в той же папке, что и HTML-код.

 function xxx(a)
{ 
alert("Value of a = "   a);  
}  
 <!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src='test3.js'> </script>
</head>

<body>

<script>

xxx([1,2,3,4,5]); 

</script>

</body>
</html>  

но из-за сложности кода построения графика я не могу эмулировать такой рабочий код.

Ответ №1:

Вы можете передавать данные из HTML в функцию, определенную во внешнем файле JS, и отображать диаграмму. Вот рабочий код:https://1drv.ms/u/s !Am6ZJqYg9Zmfgyj5JROGJigcwArr

Комментарии:

1. Спасибо, что нашли время помочь мне 🙂 Ваш очень хороший ответ с рабочим кодом сэкономил мне много времени, так что спасибо вам за это.