无法使用Canvas标记获取HTML/Javascript页面以绘制分数
Cannot get HTML/Javascript page to draw fraction using Canvas tag
我正试图获得以下带有嵌入式Javascript的HTML5页面,根据所选分子和支配者绘制一个圆圈的分数。
该代码是由@Vanojx1建议的,但我的帖子被关闭了,因为它不够"具体",我只想得到一些帮助,了解我做错了什么,请:
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="author" content="">
<meta name="description" content="Fraction Learning app for Children">
<script type="text/javascript">
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
var pi = Math.PI;
document.getElementById("draw").addEventListener("click", function () {
var num = document.getElementById("num").value;
var den = document.getElementById("den").value;
var rad = 2 / den * num * pi;
var cx = 250;
var cy = 250;
ctx.clearRect(0, 0, 500, 500);
ctx.beginPath();
ctx.moveTo(cx, cy);
ctx.arc(cx, cy, 220, 1.5 * pi, 1.5 * pi + rad);
ctx.lineTo(cx, cy);
ctx.fillStyle = "#FF0000";
ctx.fill();
ctx.closePath();
ctx.stroke();
});
</script>
<title>Fractions Fun</title>
</head>
<body>
<canvas id="myCanvas" width="500" height="500" style="border:1px solid #d3d3d3;">
Your browser does not support the HTML5 canvas tag.</canvas>
<br>
<input type="number" id="num" /> /
<input type="number" id="den" />
<br>
<button id="draw">
DRAW
</button>
</body>
</html>
HTML按照其在DOM(包括script
块)中出现的顺序呈现。因此,脚本块将在渲染draw
之前运行。由于draw
不存在,脚本无法添加单击处理程序。
将代码放入函数中,并使用body
的onload
事件调用它,将允许添加单击处理程序。见下文-
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="author" content="">
<meta name="description" content="Fraction Learning app for Children">
<script type="text/javascript">
function init() {
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
var pi = Math.PI;
document.getElementById("draw").addEventListener("click", function() {
var num = document.getElementById("num").value;
var den = document.getElementById("den").value;
var rad = 2 / den * num * pi;
var cx = 250;
var cy = 250;
ctx.clearRect(0, 0, 500, 500);
ctx.beginPath();
ctx.moveTo(cx, cy);
ctx.arc(cx, cy, 220, 1.5 * pi, 1.5 * pi + rad);
ctx.lineTo(cx, cy);
ctx.fillStyle = "#FF0000";
ctx.fill();
ctx.closePath();
ctx.stroke();
});
}
</script>
<title>Fractions Fun</title>
</head>
<body onload="init()">
<canvas id="myCanvas" width="500" height="500" style="border:1px solid #d3d3d3;">
Your browser does not support the HTML5 canvas tag.</canvas>
<br>
<input type="number" id="num" />/
<input type="number" id="den" />
<br>
<button id="draw">
DRAW
</button>
</body>
我看到的另一种方法是将script
标记放在文档的末尾(尽管我不确定这是否被认为是最佳实践,我自己也不使用它)-
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="author" content="">
<meta name="description" content="Fraction Learning app for Children">
<title>Fractions Fun</title>
</head>
<body>
<canvas id="myCanvas" width="500" height="500" style="border:1px solid #d3d3d3;">
Your browser does not support the HTML5 canvas tag.</canvas>
<br>
<input type="number" id="num" />/
<input type="number" id="den" />
<br>
<button id="draw">
DRAW
</button>
<script type="text/javascript">
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
var pi = Math.PI;
document.getElementById("draw").addEventListener("click", function() {
var num = document.getElementById("num").value;
var den = document.getElementById("den").value;
var rad = 2 / den * num * pi;
var cx = 250;
var cy = 250;
ctx.clearRect(0, 0, 500, 500);
ctx.beginPath();
ctx.moveTo(cx, cy);
ctx.arc(cx, cy, 220, 1.5 * pi, 1.5 * pi + rad);
ctx.lineTo(cx, cy);
ctx.fillStyle = "#FF0000";
ctx.fill();
ctx.closePath();
ctx.stroke();
});
</script>
</body>
相关文章:
- Javascript绘制画布内存泄漏
- 我可以将javascript绘制函数更改为图像吗
- 如何在不使用外部库的情况下使用 JavaScript 绘制折线图
- Javascript绘制画布
- 用HTML5和Javascript绘制图像
- 使用javascript绘制HTML5画布的线条不起作用
- 使用javascript绘制多个以数组元素为文本中心的圆
- 使用 HTML 和 JavaScript 绘制表格
- 使用 SVG 和 Javascript 绘制 windBarbs
- 将用Javascript绘制的外部SVG文件导出为PNG图像
- SVG 圆圈不是用 JavaScript 绘制的
- 在表中使用 javascript 绘制到画布
- 谷歌地图JavaScript绘制折线
- 使用 JavaScript 绘制到 HTML5 画布时调整.png图像的大小
- HTML5:在通过 JavaScript 绘制后将透明度应用于 Canvas
- img通过更改它的src,并由动态提供的源代码(MySQL和PHP)使用Javascript绘制
- 用javascript绘制SysML/UML图
- 纯Javascript绘制三角形,定位斜边
- 您可以在不使用javascript绘制到画布的情况下获取原始图像数据吗
- 如何使用CSS和JavaScript绘制正态分布曲线(Bell曲线)