Я правильно понял, что вы хотите зациклить несколько холстов?Поскольку вопрос не был помечен Django
, я понятия не имею, что это за "динамическая переменная": D.Но, возможно, вам поможет этот блок кода:
Вам следует перебирать все объекты холста, возвращаемые document.getElementsByTagName('canvas')
, но вы рассматриваете его как один объект
let canvases = Array.from(document.getElementsByTagName("canvas"));
canvases.forEach(canvas => {
let ctx = canvas.getContext("2d");
ctx.fillStyle = "red";
ctx.fillRect(0, 0, 100, 50);
});
canvas {
border: 1px solid black;
height: 100px;
width: 100px;
}
<canvas></canvas>
<canvas></canvas>
<canvas></canvas>
<canvas></canvas>
<canvas></canvas>
<canvas></canvas>
В вашем примере это будет выглядеть так:
pdfjsLib.getDocument('http://localhost:8000/media/media/loremipsum2.pdf').then(function (pdf) {
console.log("pdf loaded");
pdf.getPage(1).then(function (page) {
var scale = 0.40;
var viewport = page.getViewport(scale);
var canvases = document.getElementsByTagName('canvas');
Array.from(canvases).forEach((canvas) => {
var context = canvas.getContext('2d');
canvas.height = viewport.height;
canvas.width = viewport.width;
var renderContext = {
canvasContext: context,
viewport: viewport
};
page.render(renderContext);
});
});
});
Редактировать: вы можете использоватьтакие вещи, как:
let can = Array.from(document.getElementsByClassName(<className>);
let can = Array.from(document.querySelectorAll(<CSS query>);
...
Если нужного в списке нет, просто спросите: 3