javascript - 更改鼠标单击 Canvas 上的文本

标签 javascript html canvas

我目前有文本显示“可用空间”,悬停显示“单击此处预订自行车”。当用户在 Canvas 上单击时,颜色会变为红色,但如何才能使文本从“单击此处预订自行车”变为“自行车预订”。

这是代码 https://jsfiddle.net/nayshal/j2y7jm4t/

<div id="canvas-wrap">
  <canvas id="canvas" width=150 height=100> </canvas>
    <p class="text">Click here to reserve bike</p>
    <p class="text1">Free Space</p>
<div id="overlay"></div>
</div>


var c = document.getElementById("canvas");
var ctx = c.getContext("2d");
ctx.rect(0, 0, 180, 100);
ctx.stroke();
ctx.fillStyle = "green";
ctx.fill();

document.addEventListener('click',mouseClick,false);
function mouseClick(e)
{  
ctx.fillStyle = "#FF0000";
ctx.fill();

}

最佳答案

在我看来,你所做的一切毫无意义。您不使用 HTML 在 Canvas 顶部添加文本!您应该像这样使用 Javascript 添加:

ctx.font = "30px Verdana";
ctx.fillText("Hello World", 10, 50);

否则使用 Canvas 毫无意义。如果你想在这样做之后更改文本,你需要基本上删除所有内容并重新设置它,因为 fillText() 在 Canvas 上“种植”文本。让它坚持下去。它不是您可以编辑的对象,因此您需要刷新它并创建新文本。

https://jsfiddle.net/j2y7jm4t/2/

ctx.fillStyle = "#FF0000";
ctx.fill();
ctx.fillStyle = "#000";
ctx.font = "20px Arial";
ctx.textAlign = 'center';
ctx.fillText("Bike reserved", 75, 50);

这有意义吗?


现在为了改变文本,你会做这样的事情:

https://jsfiddle.net/j2y7jm4t/3/

首先将您的文本设置为默认文本:

ctx.fillStyle = "#000";
ctx.font = "12px Arial";
ctx.textAlign = 'center';
ctx.fillText("Click here to reserve bike", 75, 50);

现在它会说

Click here to reserve bike

然后只需返回并在点击函数中添加您需要做的任何事情,您可以在此处看到:

ctx.fillStyle = "#FF0000";
ctx.fill();
ctx.fillStyle = "#000";
ctx.fillText("Bike reserved", 75, 50);

可以吗?

关于javascript - 更改鼠标单击 Canvas 上的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35605347/

相关文章:

html - 如何在 HTML5 中包含多个 XML 命名空间

javascript - <canvas> 触摸另一个对象时的 javascript

javascript - Canvas 径向渐变与 .png 性能

javascript - 如何改变 promise 链?

javascript - 如何修复javascript中的语音合成话语

javascript - 在 AWS Lambda 中监听 Firebase 数据库超时

javascript - Canvas 进度矩形两种颜色

javascript - 试图让 HTML 表格与 document.write 一起出现在 Javascript 中

javascript - 函数不会运行,说它没有定义

python - 从html列表中提取信息到pandas df/list/dict (python 3.0)