HTML5,JavaScript和在画布中绘制多个矩形

为什么我的多个矩形不会画在画布上?
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title></title>
    <script src="Scripts/jquery-1.9.1.min.js"></script>
  </head>
  <body>
    <canvas id="myCanvas" width="500" height="500" style="border:1px solid red">
      <p>Your browser doesn't support canvas.</p>
    </canvas>
  </body>
</html>

<script type ="text/javascript">  
  function Shape(x,y,w,h,fill) {
    this.x = x;
    this.y = y;
    this.w = w;
    this.h = h;
    this.fill = fill;
  }

  // get canvas element.
  var elem = document.getElementById('myCanvas');

  // check if context exist
  if (elem.getContext) {

    var myRect = [];

    myRect.push(new Shape(10,25,"#333"))
    myRect.push(new Shape(0,40,39,80,100,"#333"))

    context = elem.getContext('2d');
    for (i in myRect) {

      //console.log(x);

      context.fillRect(i.x,i.y,i.w,i.h)
    }
    //// x,width,height
    //context.fillRect(0,50,50);

    //// x,height      
    //context.fillRect(75,50);
  }
</script>

感谢帮助.

解决方法

好的,所以你几乎就在那里.
当您遍历矩形数组时,您将迭代数组键而不是对象本身(请参阅 How to Loop through plain JavaScript object with objects as members?).
另外,正如@ jimjimmy1995指出的那样,你需要使用.fillStyle设置填充.fillRect没有填充参数.

代码将起作用:

function Shape(x,fill) {
    this.x = x;
    this.y = y;
    this.w = w;
    this.h = h;
    this.fill = fill;
}

// get canvas element.
var elem = document.getElementById('myCanvas');

// check if context exist
if (elem.getContext) {

    var myRect = [];

    myRect.push(new Shape(10,"#333"));
    myRect.push(new Shape(0,"#333"));

    context = elem.getContext('2d');
    for (var i in myRect) {
        oRec = myRect[i];
        context.fillStyle = oRec.fill;
        context.fillRect(oRec.x,oRec.y,oRec.w,oRec.h);

    }

}

相关文章

HTML5和CSS3实现3D展示商品信息的代码
利用HTML5中的Canvas绘制笑脸的代码
Html5剪切板功能的实现
如何通过HTML5触摸事件实现移动端简易进度条
Html5移动端获奖无缝滚动动画实现
关于HTML5和CSS3实现机器猫的代码