下面是代码------------------------------------------------------------------------------------------function createWavePlane($ID,$MAX,$WIDTH,$HEIGHT,$DELAY,$PICTUREARRAY){//存放ID,个数,宽度,高度,图片数组var $JUDGE=1;var $INDEX=1;var $TIME;for(i=0;i<$MAX;i++){var $MODLE=document.createElement("div");$MODLE.id="$IDCHUNK"+i;$MODLE.style.position="absolute";$MODLE.style.top="0px";$MODLE.style.left=$WIDTH*i;$MODLE.style.width=$WIDTH;$MODLE.style.height=$HEIGHT;$MODLE.style.backgroundRepeat="no-repeat";$MODLE.style.backgroundImage=$PICTUREARRAY[0];$MODLE.style.backgroundSize=$WIDTH*$MAX+"px "+$HEIGHT+"px";$MODLE.style.backgroundPosition=-($WIDTH*i)+"px 0px";document.getElementById($ID).appendChild($MODLE);}//创建界面function $BODY(){alert("body");document.getElementById("$IDCHUNK"+$JUDGE).style.backgroundImage=$PICTUREARRAY[$INDEX];if($JUDGE==$MAX){if($INDEX==$PICTUREARRAY.length){$INDEX=0;}else{$INDEX++;}$JUDGE=1;clearInterval($TIME);setTimeout("$START()",$DELAY);}else{$JUDGE++;}}//function $START(){$TIME=setInterval("$BODY",2000/$MAX);}//$START();}------------------------------------------------------------------------------------------
1 回答
慕婉清6462132
TA贡献1804条经验 获得超2个赞
仔细看了代码, 函数$Body是写在了函数createWavePlane中了, 这样一来$BODY最多只能算一个"局部函数"(借用局部变量的概念), 而setInterval函数的一个参数是一个JavaScript执行脚本, 从调用来看$BODY必须是一个"全局函数", 故会有$BODY未定义的错误.
另外, setInterval中应写成函数调用形式$BODY(), 这样函数才会得到执行(没有括号函数是不会被执行的).
看了此代码好像是要实现一个类似"类"的功能, 一般JavaScript中的"类"这样写:
function ClassA() { this .className = "ClassA" ; // 用this.xxx做为类成员的访问定义 this .method1(); // 调用类的"实例方法" } // 用类名.prototype = {}来定义类的各种"实例方法" ClassA.prototype = { method1: function () { window.alert( "You call method1" ); }, // 各方法间用逗号分隔 method2: function () { window.alert( "You call method2" ); } } // 用类名.静态方法 = function()定义静态方法 ClassA.staticMethod = function () { window.alert( "call static method" ); } // 这样来调用静态方法: ClassA.staticMethod(); // 这样定义"类的实例", 并调用类实例方法 var ins = new ClassA(); ins.method2(); |
添加回答
举报
0/150
提交
取消