Почему вы можете использовать новое изображение, но не новое Div или новый Span?
В примерах я видел new Image()
для создания нового элемента изображения HTML, но когда я пытаюсь new Div()
, поддержка отсутствует. Есть ли причина для этого или любого плана в будущем, чтобы добавить его?
Пример:
var image = new Image();
var div = new Div(); // error
Ответы
Ответ 1
Класс Div
не существует. Любой элемент DOM можно создать с помощью функции Document.createElement()
:
var div = document.createElement('div');
var img = document.createElement('img');
document.createElement('div')
создает новый HTMLDivElement
.
new Image()
создает на самом деле HTMLImageElement
и эквивалентно document.createElement('img')
.
Изображения могут быть созданы с использованием синтаксиса new Image()
по историческим причинам. Еще в 90-х годах объект Image
был одним из первых динамических HTML-функций, реализованных всеми браузерами до того, как был даже изобретен текущий DOM ( не говоря уже о том же, что и все браузеры).
Ответ 2
Хороший вопрос, почему этот метод существует. Уровень жизни HTML не отвечает на этот вопрос (https://html.spec.whatwg.org/multipage/embedded-content.html#dom-image). Он просто утверждает, что существует конструктор для HTMLImageElements, предоставляемый в дополнение к методу factory
document.createElement('img')
С помощью этой функции вы можете создать все элементы DOM, например.
document.createElement('div')
https://developer.mozilla.org/en-US/docs/Web/API/Document/createElement
Будут ли реализованы эти конструкторы для других элементов, которые я не знаю.