为什么是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未定义??
------解决方案--------------------