JavaScript如何在多个画布上绘制?

3
我试图在通过类选择器获取的多个画布上绘制相同的东西。我做错了什么?
var canvases = document.getElementsByClassName('canvas');

for( var i=0; i<canvases.length; i++){
   ctx = canvases[i].getContext('2d');

   ctx.arc(50, 50, 50, 0, 1.5*Math.PI);
   ctx.lineWidth = 15;

   ctx.strokeStyle = 'black';
   ctx.stroke();    
}

这是一个代码片段,涉及IT技术。
1个回答

5

您需要将它们声明为<canvas>元素,而不是<div>元素。Canvas是自己特定的HTML5元素。

因此,可以通过一些小的CSS和标记更改,摆脱类并使用getElementsByTagName而不是getElementsByClassName

HTML

<canvas></canvas>
<canvas></canvas>
<canvas></canvas>

CSS

canvas {
    width: 100px;
    height: 100px;
    background-color: yellow;
    display: inline-block;
}

JS

var canvases = document.getElementsByTagName('canvas');

for( var i=0; i<canvases.length; i++){
     ctx = canvases[i].getContext('2d');

     ctx.arc(50, 50, 50, 0, 1.5*Math.PI);
     ctx.lineWidth = 15;

     ctx.strokeStyle = 'black';
     ctx.stroke();    
}

FIDDLE


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接