Чтобы загрузить изображение с помощью поля "файл" (input type="file") заранее и вставить его в DOM, можно использовать следующий подход:
1. Добавьте элемент для отображения изображения в DOM, например, элемент с id "image-container":
```html
<div id="image-container"></div>
```
2. Создайте функцию loadLogo(), которая будет вызываться при загрузке изображения:
```javascript
function loadLogo() {
var fileInput = document.getElementById('logo-input');
var imageContainer = document.getElementById('image-container');
var file = fileInput.files[0]; // Получаем выбранный файл
// Проверяем, был ли выбран файл
if (file) {
var reader = new FileReader(); // Создаем объект FileReader
reader.onload = function(e) {
// Создаем новый элемент изображения
var image = document.createElement('img');
image.src = e.target.result; // Устанавливаем источник изображения
// Очищаем элемент контейнера изображения
imageContainer.innerHTML = '';
// Добавляем изображение в контейнер
imageContainer.appendChild(image);
};
// Читаем выбранный файл в формате Data URL
reader.readAsDataURL(file);
} else {
// Если файл не выбран, очищаем элемент контейнера изображения
imageContainer.innerHTML = '';
}
}
```
3. Добавьте поле "файл" в HTML-разметку с id "logo-input" и добавьте обработчик события "change" для вызова функции loadLogo():
```html
<input type="file" id="logo-input" onchange="loadLogo()">
```
4. Чтобы загрузить изображение при клике на нем, добавьте обработчик события "click" для вызова функции loadLogo():
```javascript
var image = document.getElementById('image-container'); // Получаем элемент изображения
image.addEventListener('click', loadLogo);
```
Теперь, при выборе файла из поля "файл" или при клике на изображение, функция loadLogo() будет корректно обрабатывать случай, когда пользователь нажимает "отмена" и вставлять предварительную загрузку изображения в DOM.