ПОДХОД К ЗАМЕНЕ DOM NODE:
С vanilla JavaScript вы можете просто использовать атрибут external HTML () , чтобы извлечь элемент в виде строки и просто заменить "img" "с" div "с использованием метода replace () и затем замените элемент <img>
на <div>
в вашей DOM (не совсем понятно, почему, поскольку div не может реально использовать атрибут src
) путем простого преобразования текущей полученной строки, назначенной переменной div
, в узел DOM с помощью createContextualFragment () и последующего использования метода replaceNode () для замены img
узел с узлом div
в вашей DOM.
Проверьте и запустите следующий фрагмент кода или откройте этот JSFiddle для практического примера вышеупомянутого подхода:
const img = document.querySelector("img");
const div = img.outerHTML.replace("img", "div");
let newDiv = document.createRange().createContextualFragment(div);
img.parentNode.replaceChild(newDiv, img);
<img class="media-1200px" src="https://images.pexels.com/photos/414612/pexels-photo-414612.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500">
NB Вам нужно будет проверить изолированную программную среду Code Snippet или изолированную программную среду JSFiddle, чтобы увидеть, что элемент <img/>
заменен на * 1032. * element.
Подход клонирования атрибутов:
Еще один способ сделать это (получивший эту идею из решения jQuery Barmar выше) будет создать новый элемент div и просто клонировать атрибуты от элемента <img>
до нового элемента <div>
с использованием свойства attribute и метода setAttributes () следующим образом:
const img = document.querySelector("img");
const newDiv = document.createElement("div");
[...img.attributes].forEach(({name, value}) =>
newDiv.setAttribute(name, value)
);
img.parentNode.replaceChild(newDiv, img);
<img class="media-1200px" src="https://images.pexels.com/photos/414612/pexels-photo-414612.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500">
NB Опять же, вам нужно будет проверить изолированную программную среду кода или изолированную программную среду JSFiddle, чтобы увидеть, что элемент <img/>
заменен на <div>
элемент.