var luOps = {};
function loadCanvas1(){
luOps = {
_iLength : 4,
_speed : 120,
_imgSrc : "themes/images/imgc/an",
_bq :"c_canvas",
drawX : 270,
drawY : 270
}
luCanvas();
}
function loadCanvas2(){
luOps = {
_iLength : 6,
_speed : 150,
_imgSrc : "themes/images/imgd/biaoqing",
_bq : "bq",
drawX : 60,
drawY : 70
}
luCanvas();
}
function luEvent(func){ 
window.onload = func; 
}
luEvent(loadCanvas1);
luEvent(loadCanvas2);这里有错。执行了loadCanvas2。。loadCanvas1的参数被覆盖了 所以想请大家帮帮我优化下。谢谢了

解决方案 »

  1.   

    那就定义2个luOps 吧,分别用于loadCanvas2。。loadCanvas1。
      

  2.   


    function luEvent(func){ 
        this.onLoadCallList ? '' : this.onLoadCallList = [];
        this.onLoadCallList.push(func);
        window.onload = function(){
            var i = onLoadCallList.length;
            while(i--){
                onLoadCallList[i]();
            }
        }; 
    }
      

  3.   


    function luEvent(func){ 
        var tmp=window.onload || function(){};
        window.onload = function(){
            tmp();
            func();
        }; 
    }
      

  4.   

    这里测试了改成这个后 只执行 loadCanvas1。。 loadCanvas2 不执行
      

  5.   

    你确定?!在luCanvas函数中alert出参数看看。
      

  6.   

    <script type="text/javascript">
    function loadCanvas() {
    luCanvas();
    }function luEvent(func,param){ 
        window.onload = function(){
    func(param)
    }; 
    }luEvent(loadCanvas,{
    _iLength : 4,
    _speed : 120,
    _imgSrc : "themes/images/imgc/an",
    _bq :"c_canvas",
    drawX : 270,
    drawY : 270
    });luEvent(loadCanvas,{
    _iLength : 6,
    _speed : 150,
    _imgSrc : "themes/images/imgd/biaoqing",
    _bq : "bq",
    drawX : 60,
    drawY : 70
    });
    </script>
      

  7.   

     测试了 我放到demo里面 检查luOps._iLength    传出来的是loadCanvas2 里面里的6    4会传进去 但是没执行 直接覆盖成6了。
      

  8.   

    不知道你的需求是什么,可能是根据不同参数来初始化不同的内容吧.这里只有 luOps 不一样,可以把相同的部分抽取出来,只需要改变 luOps 就可以了.
      

  9.   

    给你的luCanvas函数加参数不就行了,干嘛直接用全局变量??function luCanvas(luOps){/*...........*/}
    window.onload = function () {
            luCanvas({
                _iLength: 4,
                _speed: 120,
                _imgSrc: "themes/images/imgc/an",
                _bq: "c_canvas",
                drawX: 270,
                drawY: 270
            }); 
            luCanvas({
                _iLength: 6,
                _speed: 150,
                _imgSrc: "themes/images/imgd/biaoqing",
                _bq: "bq",
                drawX: 60,
                drawY: 70
            });
        }
      

  10.   


    var luCanvas = function(_iLength,_speed,_imgSrc,_bq,drawX,drawY,imageLength)引用进去弹出来的是数据类型 不是值
    我是JS小白 求版主指教