HTML画布在绘图后立即擦除矩形
HTML Canvas erases rectangle right after drawing
按下按钮后,应该在画布的第二层绘制一个矩形,并且它应该保持在那里。画画行,留宿不行。矩形出现了一瞬间,但立即又消失了,我不明白为什么。我用鼠标动作和事件监听器绘制的矩形保持不变。。。
<html>
<body>
<h2>Raumaufteilung a: </h2>
<form action="" id="inputTactics">
<table border="1">
<tr><td><button id="Butt0" onclick="draw2()">Alle</button></td>
<td width="600" height="400" valign="top">
<div id="TacticsPic">
<canvas id="ground" width="525" height="340"
style="border:2px solid #ffffff; background-color: #23D419; position: absolute; z-index: 0">
</canvas>
<canvas id="c2" width="525" height="340"
style="position: absolute; z-index: 1">
</canvas>
<canvas id="c3" width="525" height="340"
style="position: absolute; z-index: 2">
</canvas>
<br>
</div>
</td>
</tr>
</table>
</form>
<script>
var canvasTac = document.querySelector("#c2");
var ctxTac = canvasTac.getContext('2d');
function draw2() {
ctxTac.strokeRect(100,100,250,100);
};
</script>
</body>
</html>
表单似乎正在提交,导致页面重新加载。尝试替换此行:
<form action="" id="inputTactics">
这个:
<form onsubmit="return false;" id="inputTactics">
编辑:这个问题似乎很相关-希望html表单提交不做任何事情
这是因为您已经将所有代码放在了<form>
中。按下表单中的按钮提交表单,您将离开页面。
要么删除<form>
(看起来不需要它),要么需要修改draw2
函数来取消提交。
function draw2() {
ctxTac.strokeRect(100, 100, 250, 100);
event.preventDefault();
}
或者,您可以将onsubmit
处理程序直接附加到表单并在那里取消它。
<form action="" id="inputTactics" onsubmit="return false;">
您的问题是表单标签,如果您单击按钮,它将提交表单。
var canvasTac = document.querySelector("#c2");
var ctxTac = canvasTac.getContext('2d');
function draw2() {
ctxTac.strokeRect(100, 100, 250, 100);
};
document.getElementById("Butt0").addEventListener("click", draw2);
<h2>Raumaufteilung a: </h2>
<table border="1">
<tr>
<td>
<button id="Butt0">Alle</button>
</td>
<td width="600" height="400" valign="top">
<div id="TacticsPic">
<canvas id="ground" width="525" height="340" style="border:2px solid #ffffff; background-color: #23D419; position: absolute; z-index: 0">
</canvas>
<canvas id="c2" width="525" height="340" style="position: absolute; z-index: 1">
</canvas>
<canvas id="c3" width="525" height="340" style="position: absolute; z-index: 2">
</canvas>
<br>
</div>
</td>
</tr>
</table>
我认为这是因为您有一个触发提交的表单标记。
去掉表单标签,它就会起作用。
相关文章:
- HTML画布在绘图后立即擦除矩形
- 为什么缩放按钮不会显示在照片擦除中
- 将OnClick函数设置为<ul>,最后一个ul是擦除第一个ul-s
- 应用程序脚本中导入HTML的数据擦除;谷歌表格
- 正在擦除要重新显示的单元格
- 通过python擦除Vine数据
- 擦除单元格问题
- 尝试擦除时删除输入中的零
- 擦除画布中的矩形,但它们会回来
- 如何使用 javascript 向我的 html 添加内容而不擦除整个页面
- Javascript用光标擦除图像
- 停止Angular JS ng视图擦除页面
- 为什么Jquery UI会擦除我的输入框
- HtmlWebpackPlugin擦除模板分区
- "“照片擦除”;画廊关闭自己的图像点击在小图像的情况下
- 简单类型和擦除效果不起作用
- 使用Python擦除javascript生成的页面
- 内部 HTML 在添加多个文本框时擦除该值
- Javascript 页面擦除过渡与超级滚动
- 用剪刀擦除webgl绘图