首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

为什么是undefined,这跟小弟我想的一点都不一样啊

2012-05-28 
为什么是undefined,这跟我想的一点都不一样啊。我想在一个7*7的格子里随机显示8张图片,要怎么弄啊。。。。。HTML

为什么是undefined,这跟我想的一点都不一样啊。
我想在一个7*7的格子里随机显示8张图片,要怎么弄啊。。。。。

HTML code
<!DOCTYPE html><html><head><title>Game</title><script type="text/javascript" src="xxxx.js"></script><meta http-equiv="Cache-Control" content="no-cache"/></head><body onload="draw();"><canvas id="canvas" width="800" height="800"></canvas></body></html>


JScript code
function draw(){    var canvas=document.getElementById("canvas");    var context=canvas.getContext("2d");    var x,y,i,j,k;    var a=Array("0001.png","0002.png","0003.png","0004.png","0005.png","0006.png","0007.png","0008.png");    var img=new Image();    for(k=0;k<8;k++){        img.src=a[k];        img.onload=function(){            i=Math.random()*7;            j=Math.random()*7;            x=114*i+21;            y=114*j+21;            alert(a[k]); //为什么a[k]值为undefined未定义??            context.drawImage(img,x,y);        }    }}


[八张图片]









[解决办法]
var a=Array应该是这样吧var a=new Array()或者直接var a=[];
[解决办法]
好像楼上说的对
[解决办法]
Array可是个类哟,需要通过new来实例化的,如:
var a = new Array("0001.png","0002.png","0003.png","0004.png","0005.png","0006.png","0007.png","0008.png");
[解决办法]
必须new
直接Array()是调用函数的写法,Array()函数没有返回值,所以就undefind了
[解决办法]
var a=["0001.png","0002.png","0003.png","0004.png","0005.png","0006.png","0007.png","0008.png"];
[解决办法]
html5不熟
[解决办法]
var img=new Image();
for(k=0;k<8;k++){
img.src=a[k];
把var img = new Image()放到for循环的里面吧。

for(k=0;k<8;k++){
var img=new Image();
img.src=a[k];

[解决办法]
var a=["0001.png","0002.png","0003.png","0004.png","0005.png","0006.png","0007.png","0008.png"];
 
for(k=0;k<8;k++){
 var img=new Image();

img.onload=function(){
i=Math.random()*7;
j=Math.random()*7;
x=114*i+21;
y=114*j+21;
alert(this.src); //为什么a[k]值为undefined未定义??
context.drawImage(this,x,y);
};
 img.src=a[k];
}
[解决办法]
=.=这一片红星星亮瞎了我的眼

典型的闭包问题,由于无意间形成闭包,导致这样的错误

楼主的原始代码主要有这两个问题:
1.由于闭包导致当onload执行时,
JScript code
alert(a[k]); //为什么a[k]值为undefined未定义??
------解决方案--------------------


至于前面说的Array必须new的。。。不new也一样,可以去mozilla看js标准文档

热点排行