Я создаю световой короб на чистом JavaScript. Для этого делаю накладку. Я хочу добавить этот оверлей в тело, но я также хочу сохранить контент на странице. Мой текущий код добавляет оверлейный div, но также удаляет текущее содержимое в теле. Как добавить элемент div и сохранить содержимое в теле?
var el = document.getElementById('element');
var body = document.getElementsByTagName('body');
el.innerHTML = '<p><a id="clickme" href="#">Click me</a></p>';
document.getElementById('clickme').onclick = function (e) {
e.preventDefault();
document.body.innerHTML = '<div style="position:absolute;width:100%;height:100%;opacity:0.3;z-index:100;background:#000;"></div>';
}
javascript
Ом3га
источник
источник
Ответы:
Попробуйте это: -
http://jsfiddle.net/adiioo7/vmfbA/
Использовать
document.body.innerHTML += '<div style="position:absolute;width:100%;height:100%;opacity:0.3;z-index:100;background:#000;"></div>';
вместо того
document.body.innerHTML = '<div style="position:absolute;width:100%;height:100%;opacity:0.3;z-index:100;background:#000;"></div>';
Изменить: - В идеале вы должны использовать
body.appendChild
метод вместо измененияinnerHTML
var elem = document.createElement('div'); elem.style.cssText = 'position:absolute;width:100%;height:100%;opacity:0.3;z-index:100;background:#000'; document.body.appendChild(elem);
источник
innerHTML
заново.Использование Javascript
var elemDiv = document.createElement('div'); elemDiv.style.cssText = 'position:absolute;width:100%;height:100%;opacity:0.3;z-index:100;background:#000;'; document.body.appendChild(elemDiv);
Использование jQuery
$('body').append('<div style="position:absolute;width:100%;height:100%;opacity:0.3;z-index:100;background:#000;"></div>');
источник
appendChild()
иinsertBefore()
придать еще большую гибкость в расположении вставляемого элементаВместо того, чтобы заменять все на innerHTML, попробуйте:
document.body.appendChild(myExtraNode);
источник
document.body
.улучшить пост @Peter T, собрав все решения в одном месте.
Element.insertAdjacentHTML ()
function myFunction() { window.document.body.insertAdjacentHTML( 'afterbegin', '<div id="myID" style="color:blue;"> With some data...</div>' ); } function addElement(){ var elemDiv = document.createElement('div'); elemDiv.style.cssText = 'width:100%;height:10%;background:rgb(192,192,192);'; elemDiv.innerHTML = 'Added element with some data'; window.document.body.insertBefore(elemDiv, window.document.body.firstChild); // document.body.appendChild(elemDiv); // appends last of that element } function addCSS() { window.document.getElementsByTagName("style")[0].innerHTML += ".mycss {text-align:center}"; }
Используя
XPath
поиск позиции элемента в дереве DOM и вставьте указанный текст в указанную позицию в XPath_Element. попробуйте этот код через консоль браузера.function insertHTML_ByXPath( xpath, position, newElement) { var element = document.evaluate(xpath, window.document, null, 9, null ).singleNodeValue; element.insertAdjacentHTML(position, newElement); element.style='border:3px solid orange'; } var xpath_DOMElement = '//*[@id="answer-33669996"]/table/tbody/tr[1]/td[2]/div'; var childHTML = '<div id="Yash">Hi My name is <B>\"YASHWANTH\"</B></div>'; var position = 'beforeend'; insertHTML_ByXPath(xpath_DOMElement, position, childHTML);
источник
Попробуйте сделать
document.body.innerHTML += '<div style="position:absolute;width:100%;height:100%;opacity:0.3;z-index:100;background:#000;"></div>'
источник
Вы можете создать свой
div
HTML-код и установить его прямо вbody
(или любой элемент) с помощью следующего кода:var divStr = '<div class="text-warning">Some html</div>'; document.getElementsByTagName('body')[0].innerHTML += divStr;
источник
Современный способ - использовать
ParentNode.append()
вот так:let element = document.createElement('div'); element.style.cssText = 'position:absolute;width:100%;height:100%;opacity:0.3;z-index:100;background:#000;'; document.body.append(element);
источник
Самый лучший и лучший способ - создать элемент и добавить его в
body
тег. Второй способ - сначала получитьinnerHTML
свойствоbody
и добавить к нему код. Например:var b = document.getElementsByTagName('body'); b.innerHTML = b.innerHTML + "Your code";
источник
document.body
, во-вторых, как я уже упоминал ранее, не перезаписывайте всю страницу только для того, чтобы добавить элемент.Вот действительно быстрый трюк: допустим, вы хотите добавить тег p внутри тега div.
<div> <p><script>document.write(<variablename>)</script></p> </div>
Вот и все.
источник