Ошибка TypeError: canvas.getContext is not a function
// не изменять
$(`.stat`).append(`<div data-type="volume"><div>`);
let elem = $(`.stat [data-type="volume"]`);
// не изменять
let canvas = elem.html('<canvas></canvas>').find('canvas');
let ctx = canvas.getContext('2d');
let width = canvas.offsetWidth * 2;
let height = canvas.offsetHeight * 2;
console.log(canvas, width, height);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="stat"></div>
Ответы (1 шт):
Автор решения: Grundy
→ Ссылка
elem - это jQuery объект.
.html - также возвращает jQuery объект.
У jQuery объектов нет метода getContext, поэтому и ошибка.
Для решения нужно получить HTMLElement из выборки jQuery, например с помощью метода .get, либо обращаясь просто по индексу
let canvas = elem.html('<canvas></canvas>').find('canvas').get(0);
let canvas = elem.html('<canvas></canvas>').find('canvas')[0];