为什么更改我的函数名称会破坏我的JavaScript?

时间:2011-09-11 20:25:26

标签: javascript jquery

我有以下完美的作品

$(function() {

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

但是当我做出以下修改时

createCharts();
function createCharts() {

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

我收到以下错误消息

消息:'Highcharts'未定义

没有其他改变为什么以上破坏了我的剧本?

4 个答案:

答案 0 :(得分:3)

在第一个示例中,当文档准备就绪时(即,在加载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>

答案 1 :(得分:1)

在第一个示例中,函数在加载包含Highcharts定义的文件之后运行。第二,它在找到函数定义后立即执行,可能在加载Highcharts文件之前执行。

答案 2 :(得分:1)

可能是因为Highcharts库尚未加载第二个库。您是否在加载highcharts js文件之前运行此代码?

答案 3 :(得分:1)

$()是一个特殊的函数,等待dom准备就绪。

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

我猜测在调用createCharts时尚未创建Highcharts,而是在DOM准备好之前创建。