javascript 引用 参数的问题

var data =
    [
    {
        value: 23,
        color:"orange"
    },
    {
        value : 20,
        color : "lawngreen"
    },
    {
        value : 20,
        color : "#666666"
    },
    {
        value : 50,
        color : "rgb(255,130,0)"
    }
]
 function Pie(id,data){
    var can = $(id).get(0).getContext("2d");
    var myNewChart = new Chart(can);
    new Chart(can).Pie(data,2);

}
function Doughnut(id,data){
    var can = $(id).get(0).getContext("2d");
    var myNewChart = new Chart(can);
    new Chart(can).Doughnut(data,2);
}
//这样直接执行会报错,
Pie(lucy,data); 
Doughnut(alice,data);
//但是在HTML中又是可以执行的,求解
<body onload="Pie(lucy,data); Doughnut(alice,data)">
<canvas id="alice" width="400" height="400"></canvas>
        <canvas id="lucy" width="400" height="400"></canvas>

关键看调用的时机,写在onload里面,是所有html载入了以后再执行的,你那么些不知道是写在什么地方,那个 $(id) html在那时候加载了么

Pie(lucy,data);
Doughnut(alice,data); 参数都不知道哪来的,肯定不行

//这样直接执行会报错,
Pie(lucy,data);
Doughnut(alice,data);

因为执行你这个代码的时候dom对象还没有生成,而且最好不用通过id来引用对象,使用document.getElementById,或者传递字符串id,函数里面document.getElementById来获取