将 html canvas 放入 table 个单元格
place html canvas in table cells
我有一个table。我试图在计数框列内显示我创建的 html canvas。我有 10 条记录,所以 canvas 应该在 table 中显示 10 次。这是我到目前为止所做的:
var c4 = document.getElementById("c4");
var c4_context = c4.getContext("2d");
function Vertical_2px_Red() {
for (i=0;i<10;i++){
c4_context.beginPath();
c4_context.moveTo(20+i*100, 20);
c4_context.lineTo(100+i*100, 20);
c4_context.moveTo(20+i*100, 20);
c4_context.lineTo(20+i*100, 100);
c4_context.moveTo(100+i*100, 20);
c4_context.lineTo(100+i*100, 100);
c4_context.moveTo(20+i*100, 20);
c4_context.lineTo(100+i*100, 100);
c4_context.moveTo(100+i*100, 100);
c4_context.lineTo(20+i*100, 100);
c4_context.strokeStyle = "Red";
c4_context.stroke();
}
}
My html form:
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div class="container-table">
<table border="1" width="100%">
<thead>
<tr>
<td>{{label.table.cName}}</td>
<td colspan="2">{{label.table.cVote}}</td>
<td>{{label.table.cTB}}</td>
<td>{{label.table.cNV}}</td>
</tr>
</thead>
<tbody>
<tr ng-repeat="(key,value) in candidates[0]">
<td>{{value.no}} {{label.table.period}} {{value.name}}</td>
<td>{{value.votes}}</td>
<td><canvas id="c4" width="500" height = "200" style="border:solid 1px #000000;"></canvas></td>
</tr>
</tbody>
</table>
</div>
canvas 输出是 10 个计数框。
现在,我想将 canvas 输出显示到每一行的计数框列。但它不起作用。我做错了什么。任何答案将不胜感激。谢谢
一方面,您需要为每个 canvas 提供一个唯一的 ID。从技术上讲,拥有超过 1 个具有相同 ID 的项目是不合法的。使用 ng-repeat 的值中的内容构造 ID。如果那是一个唯一的数字,也许 value.no。
您需要修改 javascript 以获得适当的上下文并写入其中。可能在页面末尾或页面加载时执行此操作。
或者更好的方法可能是制作一个指令,其中包含您的 canvas 和绘制到其中的必要函数。该指令将负责根据传入的值创建唯一 ID,然后它将知道如何引用和绘制到上下文中。
我有一个table。我试图在计数框列内显示我创建的 html canvas。我有 10 条记录,所以 canvas 应该在 table 中显示 10 次。这是我到目前为止所做的:
var c4 = document.getElementById("c4");
var c4_context = c4.getContext("2d");
function Vertical_2px_Red() {
for (i=0;i<10;i++){
c4_context.beginPath();
c4_context.moveTo(20+i*100, 20);
c4_context.lineTo(100+i*100, 20);
c4_context.moveTo(20+i*100, 20);
c4_context.lineTo(20+i*100, 100);
c4_context.moveTo(100+i*100, 20);
c4_context.lineTo(100+i*100, 100);
c4_context.moveTo(20+i*100, 20);
c4_context.lineTo(100+i*100, 100);
c4_context.moveTo(100+i*100, 100);
c4_context.lineTo(20+i*100, 100);
c4_context.strokeStyle = "Red";
c4_context.stroke();
}
}
My html form:
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div class="container-table">
<table border="1" width="100%">
<thead>
<tr>
<td>{{label.table.cName}}</td>
<td colspan="2">{{label.table.cVote}}</td>
<td>{{label.table.cTB}}</td>
<td>{{label.table.cNV}}</td>
</tr>
</thead>
<tbody>
<tr ng-repeat="(key,value) in candidates[0]">
<td>{{value.no}} {{label.table.period}} {{value.name}}</td>
<td>{{value.votes}}</td>
<td><canvas id="c4" width="500" height = "200" style="border:solid 1px #000000;"></canvas></td>
</tr>
</tbody>
</table>
</div>
canvas 输出是 10 个计数框。
现在,我想将 canvas 输出显示到每一行的计数框列。但它不起作用。我做错了什么。任何答案将不胜感激。谢谢
一方面,您需要为每个 canvas 提供一个唯一的 ID。从技术上讲,拥有超过 1 个具有相同 ID 的项目是不合法的。使用 ng-repeat 的值中的内容构造 ID。如果那是一个唯一的数字,也许 value.no。 您需要修改 javascript 以获得适当的上下文并写入其中。可能在页面末尾或页面加载时执行此操作。
或者更好的方法可能是制作一个指令,其中包含您的 canvas 和绘制到其中的必要函数。该指令将负责根据传入的值创建唯一 ID,然后它将知道如何引用和绘制到上下文中。