1

複数のキャンバス要素を追加して、ページの読み込み時に読み込む必要がある html ページがあります。

function draw()
{
var c=document.getElementById("myCanvas");
var padding = 20;
var ctx=c.getContext("2d");
var grd=ctx.createLinearGradient(0,0,175,50);
grd.addColorStop(0,"#E05D1B");
grd.addColorStop(1,"#00FF00");
ctx.fillStyle=grd;
ctx.fillRect(0,0,275,50);
}

<canvas id="myCanvas" width="250" height="8" style="margin-bottom:10px;margin-left:10px;">
<img src="images\gradient1.png" style="margin-bottom:10px;margin-left:10px;"/>
</canvas>

このコードのように別の ID で追加していますが、javascript を再コード化する必要があります。どうすれば減らすことができますか??

<canvas id="myCanvas1" width="250" height="8" style="margin-bottom:10px;margin-left:10px;"> <img src="images\gradient1.png" style="margin-bottom:10px;margin-left:10px;"/> </canvas>
4

1 に答える 1

5

個別のキャンバス要素のコンテキストをパラメーターとして描画関数 ( fiddle )に渡すことができます。

function draw(ctx)
{
    var grd=ctx.createLinearGradient(0,0,175,50);
    grd.addColorStop(0,"#E05D1B");
    grd.addColorStop(1,"#00FF00");
    ctx.fillStyle=grd;
    ctx.fillRect(0,0,275,50);
}

draw(document.getElementById("canvas_1").getContext("2d"));
draw(document.getElementById("canvas_2").getContext("2d"));

または、canvas 要素の数によっては、描画関数をループ ( fiddle )で呼び出す方が効率的な場合があります。

function draw(ctx)
{
    var grd=ctx.createLinearGradient(0,0,175,50);
    grd.addColorStop(0,"#E05D1B");
    grd.addColorStop(1,"#00FF00");
    ctx.fillStyle=grd;
    ctx.fillRect(0,0,275,50);
}

var i = 1;
while (document.getElementById("canvas_" + i)) {
   draw(document.getElementById("canvas_" + i).getContext("2d"));
   i ++;       
}
于 2012-05-17T08:27:39.347 に答える