Jquery与纯javascript相比,为什么我的代码不起作用?

Jquery与纯javascript相比,为什么我的代码不起作用?,javascript,arrays,scope,Javascript,Arrays,Scope,我是Javascript新手,遇到了一个无法解决的问题。 我想用jquery将一个示例重写为纯Javascript 我不明白为什么这样不行。 为什么变量“vorlauf”在函数外为空? 这不是一个全局变量吗? 我附上了控制台输出的图片 未按预期工作(尝试忽略所有杂波…): 请将所有javascript放在上面 <!DOCTYPE HTML> <html> <head> </head> <body> <div id="char

我是Javascript新手,遇到了一个无法解决的问题。 我想用jquery将一个示例重写为纯Javascript

我不明白为什么这样不行。 为什么变量“vorlauf”在函数外为空? 这不是一个全局变量吗? 我附上了控制台输出的图片

未按预期工作(尝试忽略所有杂波…):


请将所有javascript放在上面

<!DOCTYPE HTML>
<html>

<head>

</head>

<body>
<div id="chartContainer" style="height: 70%; width: 100%;"></div>
<script src="https://canvasjs.com/assets/script/jquery-1.11.1.min.js"></script>
<script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
<script>
    window.onload = function() {

        let vorlauf = [];

        let chart = new CanvasJS.Chart("chartContainer", {
            animationEnabled: true,
            theme: "light2",
            title: {
                text: "Vorlauf"
            },
            axisY: {
                title: "Grad",
                titleFontSize: 24
            },
            axisX: {
                valueFormatString: "YYYY-MM-DD hh:mm:ss",
                labelAngle: -50
            },
            data: [{
                name: "Vorlauf",
                showInLegend: true,
                type: "spline",
                dataPoints: vorlauf
            }]
        });

        $.getJSON("http://localhost/vorlauf.json", function(data) {
            for (let i = 0; i < data.length; i++) {
                vorlauf.push({
                    x: new Date(data[i].date + " " + data[i].time),
                    y: Number(data[i].temp) / 1000
                });
            }
            chart.render();
        })
    }
</script>

window.onload=函数(){
设vorlauf=[];
让chart=newcanvasjs.chart(“chartContainer”{
animationEnabled:没错,
主题:“light2”,
标题:{
文本:“沃洛夫”
},
axisY:{
标题:“毕业生”,
标题字体:24
},
axisX:{
valueFormatString:“YYYY-MM-DD hh:MM:ss”,
labelAngle:-50
},
数据:[{
姓名:“沃洛夫”,
showInLegend:是的,
类型:“样条曲线”,
数据点:沃洛夫
}]
});
$.getJSON(“http://localhost/vorlauf.json,函数(数据){
for(设i=0;i


fetch
是异步的,因此尽管
console.log(“Nach Aufruf getJSON”+vorlauf.length)
发生在程序文本中的fetch之后,但它是在
fetch
返回结果之前运行的。感谢您提供的信息。这是为我做的!Thx@Ben&Jonas异步函数getJSON(a){try{var r=await(await fetch(a)).json();for(let i=0;i!DOCTYPE HTML> <html> <head> <script> window.onload = function() { let vorlauf = []; let chart = new CanvasJS.Chart("chartContainer", { animationEnabled: true, theme: "light2", title: { text: "Vorlauf" }, axisY: { title: "Grad", titleFontSize: 24 }, axisX:{ valueFormatString: "YYYY-MM-DD hh:mm:ss" , labelAngle: -50 }, data: [{ name: "Vorlauf", showInLegend: true, type: "spline", dataPoints: vorlauf }] }); $.getJSON("http://localhost/vorlauf.json", function(data) { for(let i = 0; i < data.length; i++) { vorlauf.push({ x: new Date(data[i].date + " " + data[i].time), y: Number(data[i].temp) / 1000 }); } chart.render(); }) } </script> </head> <body> <div id="chartContainer" style="height: 70%; width: 100%;"></div> <script src="https://canvasjs.com/assets/script/jquery-1.11.1.min.js"></script> <script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script> </body> </html>
[{"date": "2020-02-22", "temp": "39937", "time": "09:28:59"}, {"date": "2020-02-22", "temp": "39937", "time": "09:29:21"}]
<!DOCTYPE HTML>
<html>

<head>

</head>

<body>
<div id="chartContainer" style="height: 70%; width: 100%;"></div>
<script src="https://canvasjs.com/assets/script/jquery-1.11.1.min.js"></script>
<script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
<script>
    window.onload = function() {

        let vorlauf = [];

        let chart = new CanvasJS.Chart("chartContainer", {
            animationEnabled: true,
            theme: "light2",
            title: {
                text: "Vorlauf"
            },
            axisY: {
                title: "Grad",
                titleFontSize: 24
            },
            axisX: {
                valueFormatString: "YYYY-MM-DD hh:mm:ss",
                labelAngle: -50
            },
            data: [{
                name: "Vorlauf",
                showInLegend: true,
                type: "spline",
                dataPoints: vorlauf
            }]
        });

        $.getJSON("http://localhost/vorlauf.json", function(data) {
            for (let i = 0; i < data.length; i++) {
                vorlauf.push({
                    x: new Date(data[i].date + " " + data[i].time),
                    y: Number(data[i].temp) / 1000
                });
            }
            chart.render();
        })
    }
</script>