Если я сделаю:
let html = `<!DOCTYPE html>
<html>
<head>
<title>Hello, world!</title>
</head>
<body>
<p>Hello, world!</p>
</body>
</html>`;
let newHTMLDocument = document.implementation.createHTMLDocument().documentElement;
newHTMLDocument.innerHTML = html;
console.info( newHTMLDocument );
Результат:
<html>
<head>
<title>Hello, world!</title>
</head>
<body>
<p>Hello, world!</p>
</body>
</html>
Почему не включен тег doctype? Что мне нужно сделать, чтобы при выводе newHTMLDocument он включал тег doctype?



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


.documentElement возвращает элемент <html> (элемент в корне документа - - <!doctype> не является элементом, это узел декларации), поэтому вы исключаете doctype самостоятельно.
Если избавиться от .documentElement, doctype останется.
let html = `<!doctype html>
<html>
<head>
<title>Hello, world!</title>
</head>
<body>
<p>Hello, world!</p>
</body>
</html>`;
let newHTMLDocument = document.implementation.createHTMLDocument();
newHTMLDocument.innerHTML = html;
// You can access the doctype as an object:
console.info("The <!doctype> is a node type of: " +newHTMLDocument.doctype.nodeType,
"\nWhile the documentElement is a node type of: " + newHTMLDocument.documentElement.nodeType);
console.info(newHTMLDocument.doctype);
alert(newHTMLDocument.innerHTML);@GTSJoe newHTMLDocumemt - это объект, вы не регистрируете его напрямую. Мой код регистрирует это .innerHTML. Вы можете получить любое его содержимое, например, с помощью newHTMLDocument.querySelector ().
Для справки, в итоге я использовал следующий ответ: stackoverflow.com/questions/8227612/…, который использует createHTMLDocument doc.open (); doc.write (HTML); doc.close (); создать объект HTML
Вы также можете использовать createDocumentType() с createHTMLDocument() или createDocument():
const doc = document.implementation.createHTMLDocument('title');
console.info('before', new XMLSerializer().serializeToString(doc));
const docType = document.implementation.createDocumentType('qualifiedNameStr', 'publicId', 'systemId');
doc.doctype.replaceWith(docType);
console.info('after', new XMLSerializer().serializeToString(doc));
Я пробовал ваш код, но если я сделаю console.info (newHTMLDocument); он не содержит моих элементов, тега заголовка и тега p. Мне нужны все мои элементы в объекте, потому что я собираюсь использовать некоторые функции JS DOM для объекта.