2016-10-06 18 views
1

ボタンを押した後、Javascriptを使って矩形を黄色から白に徐々に変えようとしています。残念ながら私のコードは動作しません。コードの何が間違っているのか、それを修正する方法を教えてください。徐々に消えてJSを使用して色を付ける

私はちょうどJavascriptを勉強し始めました。申し訳ありませんが、この質問がばかだと。前もって感謝します。

これは私のコードです:

<!DOCTYPE html> 
<html> 
<body> 

<canvas id="myCanvas" width="300" height="150" style="border:1px solid #d3d3d3;"> 
Your browser does not support the HTML5 canvas tag.</canvas> // create canvas to work with 

<button onclick="fade(ctx)">Change the colour!</button> 

<script> 

var c = document.getElementById("myCanvas"); 
var ctx = c.getContext("2d"); //set context 
ctx.rect(20, 20, 150, 100); // draw a rectangle 
ctx.stroke(); // with border 
ctx.fillStyle="#FFFF00"; // fill with yellow 
ctx.fillRect(20,20,150,100); 

function fade(ctx) { // fade function responsible for changing colour 

var dom = getElementById(ctx), level = 1; // new object based on rectangle object, initial iterator is set to 1 

function step() { // inner step function 
    var h = level.toString(16); 
    dom.fillStyle = '#FFFF' + h + h; // construct a new colour using h variable 

    if (level < 15) { 
    level += 1; 
    setTimeout(step, 100); // do this after every 100 ms 
    } 

    } 

    setTimeout(step, 100); 
} 

</script> 

</body> 
</html> 
+1

なぜCSSを使用しないのですか? –

+0

私はJavascriptを勉強しようとしており、内部の関数とタイムアウトを処理する方法を学びたいと思っています。色を徐々に変えることがCSSを使ってどのようにできるのかよく分かりません。 –

+1

ここのCSSのみ:http://codepen.io/impressivewebs/pen/zohgt –

答えて

0

あなたがほとんどしかし、あなたのコードでそれを持っています。関数にコンテキストを渡しているので、getElementById(ctx)ビットは必要ありません。実際にはエラーが出るので、コードからその行を削除してください。代わりに、直接このようなCTX変数上のfillStyleを設定します。

ctx.fillStyle = '#FFFF' + h + h; 

ます。また、四角形を再描画するので、この行を追加する必要があります:あなたは色を設定した後

ctx.fillRect(20,20,150,100); 

を。そしてそれがそれを行います。

+0

ありがとうございました。とにかくオブジェクトに「レベル」プロパティを追加する必要があると思うので、getElementById(ctx)を取り除く方法を正確にはわかりませんでした。あなたの回答に基づいて、私は以下の変更を加えようとしましたが、それでも私のためには機能しません。おそらく私は、あなたが変更を提案したことをかなり理解していませんでした:[リンク] http://pastebin.com/mBSq8Rum(http://pastebin.com/mBSq8Rum) –

+0

だから、単にDOM変数の宣言を削除しても、レベル変数が必要です。その行は次のようになります: 'var level = 1;'そうでなければ、コードは正しいように見えます。 –

+0

素晴らしい!私は変更を加え、それは働いた!どうもありがとうございました! [http://pastebin.com/kyTAktTn](http://pastebin.com/kyTAktTn) –

関連する問題