簡體   English   中英

為什么更改函​​數名會破壞JavaScript?

[英]Why does changing the name of my function break my JavaScript?

我有以下完美的作品

$(function() {

    // Create the chart
    chart = new Highcharts.StockChart({
        ...
    });
});

但是當我進行以下修改時

createCharts();
function createCharts() {

    // Create the chart
    chart = new Highcharts.StockChart({
        ...
    });
}

我收到以下錯誤消息

消息:“ Highcharts”未定義

沒有其他改變,為什么上面的腳本破壞了我的腳本?

在第一個示例中,當文檔准備就緒時(即,在加載HighCharts腳本之后),將調用該函數。 在第二個示例中,HighCharts腳本可能是在您正在運行的腳本之后定義的,因此您需要等待文檔准備就緒:

$(createCharts); // <- pass createCharts to $()/jQuery.ready()
function createCharts() {

    // Create the chart
    chart = new Highcharts.StockChart({
        ...
    });
}

...或更改腳本的順序:

<head>
  <!-- libraries first -->
  <script src="jquery.js"></script>
  <script src="highcharts.js"></script>

  <!-- your script last -->
  <script src="myscript.js"></script>
</head>

在第一個示例中,該函數在包含Highcharts定義的文件加載后運行。 第二,它在找到函數定義后立即執行,可能在加載Highcharts文件之前。

可能是因為Highcharts庫尚未加載第二個庫。 在加載highcharts js文件之前,您是否正在運行此代碼?

$()是一個特殊功能,它等待dom准備就緒。

http://api.jquery.com/ready/

我猜Highcharts尚未在調用createCharts時創建,而是在DOM准備就緒之前創建的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM