按下按钮后,我尝试使用Javascript逐渐将其颜色(淡入淡出)从黄色变为白色。可悲的是我的代码不起作用。你能帮我弄清楚代码有什么问题以及如何修复它吗?
我刚刚开始学习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>
答案 0 :(得分:0)
尽管如此,你几乎可以使用它。您正在将上下文传递给函数,因此不需要getElementById(ctx)
位。实际上,这会给你一个错误,所以从你的代码中删除该行。而是直接在ctx变量上设置fillStyle,如下所示:
ctx.fillStyle = '#FFFF' + h + h;
并且您还需要重绘矩形,因此请添加以下行:
ctx.fillRect(20,20,150,100);
设置颜色后。这样就可以了。