Вместо утомительного поиска обходных путей для каждого типа атрибута и события при использовании следующего синтаксиса:
elem = document.createElement("div");
elem.id = 'myID';
elem.innerHTML = ' my Text '
document.body.insertBefore(elem,document.body.childNodes[0]);
Есть ли способ просто объявить весь HTML-элемент в виде строки? лайк:
elem = document.createElement("<div id='myID'> my Text </div>");
document.body.insertBefore(elem,document.body.childNodes[0]);
javascript
html
Вспышка
источник
источник
Вы хотите это
источник
body
элементом, но отлично работает с любым другим элементом.<body>
. Собственно говоря, его запуск - это<body>
мой стандартный метод внедрения таких вещей, как таблицы стилей, в веб-страницы через консоль. Какая у вас проблема?<body>
были undefined, то были бы все остальные элементы, так что это, скорее всего, не проблема Филла.Взгляните на insertAdjacentHTML
position - это позиция относительно элемента, который вы вставляете рядом с:
'beforebegin' Перед самим элементом
'afterbegin' Внутри элемента, перед его первым потомком
'beforeend' Внутри элемента, после его последнего дочернего элемента
'afterend' После самого элемента
источник
В старом JavaScript вы могли сделать это:
В ответ на ваш комментарий:
Однако вам нужно вставить новый HTML в DOM; вот почему
innerHTML
используется в старом примере JavaScript.innerHTML
ИзBODY
элемента предваряется с новым HTML. На самом деле мы не затрагиваем существующий HTML внутриBODY
.Я перепишу вышеупомянутый пример, чтобы прояснить это:
Использование фреймворка JavaScript сделает этот код менее подробным и улучшит читаемость. Например, jQuery позволяет делать следующее:
источник
document.getElementsByTagName('body')[0]
действительно может быть заменен наdocument.body
, хороший момент. Однако, если вы хотите добавить или добавить новый HTML к другому существующему элементу вместо BODY, вам придется использоватьdocument.getElementById()
и / илиdocument.getElementsByTagName()
; поэтому я использовал его в примере.Насколько мне известно, что, честно говоря, является довольно новым и ограниченным, единственная потенциальная проблема с этим методом заключается в том, что вам не позволяют динамически создавать некоторые элементы таблицы.
Я использую форму для создания шаблонов, добавляя элементы «шаблона» к скрытому DIV, а затем использую cloneNode (true) для создания клона и добавляя его по мере необходимости. Имейте в виду, что вам нужно убедиться, что вы переназначаете идентификаторы по мере необходимости, чтобы предотвратить дублирование.
источник
Как говорили другие, можно эмулировать удобную функцию добавления jQuery :
Хотя некоторые говорят, что с innerHTML лучше не «связываться» , во многих случаях он надежен, если вы знаете следующее:
https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML
Или:
insertAdjacentHTML
вероятно, хорошая альтернатива: https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTMLисточник
Если вы хотите вставить HTML-код в тег существующей страницы, используйте Jnerator . Этот инструмент был создан специально для этой цели.
Вместо написания следующего кода
Можно написать более понятную структуру
источник