вы перегружаете первый <img>
элемент каждый раз, когда файл изменяется. Лучше найти <img>
рядом с целевым элементом ввода:
var loadFile = function(event) {
var output = event.target.nextElementSibling;
output.src = URL.createObjectURL(event.target.files[0]);
};
РЕДАКТИРОВАТЬ: включить в свой вопрос в комментарии
Для создания новых input
элементов в JS
и реализовать то же поведение, что и для других элементов input
, вам нужно будет создать не только элемент ввода, но и весь узел li
, как структуру существующего html, и добавить его к ul
в DOM
. Обратите внимание, что если структура html изменится, nextElementSibling
может не найти соответствующий тег img
.
<script type="text/javascript">
var loadFile = function(event) {
var output = event.target.nextElementSibling;
output.src = URL.createObjectURL(event.target.files[0]);
};
const input = document.createElement('INPUT');
input.type = 'file';
input.accept = '.png, .jpg, .jpeg';
input.onchange = loadFile;
const img = document.createElement('IMG');
img.width = '100';
const li = document.createElement('LI');
li.appendChild(input);
li.appendChild(img);
const ul = document.querySelector('ul');
ul.appendChild(li);
</script>