【发布时间】:2020-10-12 10:32:47
【问题描述】:
所以我有一个循环,可以根据 jquery 的某些参数创建画布。 代码如下:
var Game = {
cards: [],
$board: $('[data-display="game-board"]'),
deal: function() {
var self = this;
var dealRequest = $.ajax({
url: 'set.php?action=deal',
type: 'GET',
dataType: 'json',
success: function(data) {
self.cards = data;
self.displayCards.call(self);
self.existingSet(data);
self.setCardListeners();
self.setPageListeners();
}
});
},
displayCards: function() {
var self = this;
$.each(this.cards, function(index, card) {
var cardNode = $('<div>');
cardNode.addClass('card');
$(cardNode).data({
'id': card.id,
'shape': card.shape,
'fill': card.fill,
'color': card.color,
'number': card.number
});
var shapeNode = $("<canvas></canvas>");
shapeNode.addClass('shape ' + card.color + ' ' + card.shape + ' ' + card.fill);
for (var i = 0; i < card.number; i++) {
cardNode.append(shapeNode.clone());
}
self.$board.append(cardNode);
// display 4 cards per row
if ((index+1) % 3 === 0) {
self.$board.append($('<div>'));
}
};
然后我尝试从我的 HTML 中恢复这些使用 css 类的名称创建的画布,例如:
var canvases = document.getElementsByClassName('shape diamond red solid');
但是当我尝试在这些画布中绘制时,没有显示任何内容。我会这样做:
var canvases = document.getElementsByClassName('shape red diamond solid');
for (let canvas of canvases) {
var context = canvas.getContext('2d');
drawDiamond(context, 50, 50, 75, 100);
canvas.fillStyle("#FF0000");
ctx.fillRect(0, 0, canvas.width, canvas.height);
}
但是当我静态地创建一个画布时。
您能帮我找出问题或解决方案吗?谢谢!
【问题讨论】:
-
我看不到您将画布附加到文档的哪个位置,因此它不是您可以“获取”的元素。
-
我还是个 javascript 初学者,我对它知之甚少。你能告诉我怎么做吗?
标签: javascript html jquery canvas draw