Я пытаюсь изменить некоторый код JavaScript getUserMedia из Анант Нараянан, чтобы иметь возможность создавать новый div с новым изображением снимка внутри него каждый раз, когда щелкается поток (в отличие от текущего метода, который просто заменяет новое изображение снова и снова в том же разделе). Мне удалось создать новый класс с именем «aClassName» каждый раз, когда щелкают поток, но изображения не добавляются к этим классам...
function takeSnapshot() {
var img = document.querySelector('img') || document.createElement('img');
var context;
var width = video.offsetWidth
, height = video.offsetHeight;
canvas = canvas || document.createElement('canvas');
canvas.width = width;
canvas.height = height;
context = canvas.getContext('2d');
context.drawImage(video, 0, 0, width, height);
img.src = canvas.toDataURL('image/png');
// My Modified Code //
var new_row = document.createElement('div');
new_row.className = "aClassName";
document.body.appendChild(new_row);
document.getElementsByName("aClassName").appendChild(img);
}
Я также попытался создать счетчик с длиной существующего div "aClassName" и использовать getElementsByClassName, но это поместило изображение только в первый div "aClassName", а не остальные...
var new_row = document.createElement('div');
new_row.className = "aClassName";
document.body.appendChild(new_row);
var c = document.getElementsByClassName("aClassName").length;
var counter = parseInt(c)
document.getElementsByClassName("aClassName")[counter - 1].appendChild(img);
Это то, что происходит в настоящее время... Генерируются div aClassName и создается новое изображение, но новое изображение не генерируется внутри div aClassName...



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


getElementByTagName используется для подсчета div вместо get"ElementsByClassName.
Также ссылка на последний элемент должна быть counter -1.
var new_row = document.createElement('div');
new_row.className = "aClassName";
document.body.appendChild(new_row);
var c = document.getElementsByClassName("aClassName").length;
var counter = parseInt(c)
console.info(counter)
document.getElementsByClassName("aClassName")[counter - 1].appendChild(img);
Правки после модификации:
Взгляните на строку ниже:
var img = document.querySelector('img') || document.createElement('img');
После первой итерации элемент img доступен и для него не будет создаваться новый. Таким образом, дочерний элемент, который вы добавляете к родительскому, является одним и тем же элементом. Вот почему вы видите, как он перемещается от родителя к родителю.
Это сделало это! Я удалил document.querySelector('img') и создал несколько изображений! Спасибо, Шарль!
Спасибо, Чарли. Я обновил свой код и вопрос с вашим кодом .... он работает лучше, но у меня все еще есть проблема ... посмотрите анимированный gif, который я добавил к вопросу ... есть идеи?