Добавление элемента div в тело или документ в JavaScript
Я создаю световую коробку в чистом 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>';
}
Ответы
Ответ 1
Попробуйте это: -
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>';
Edit: -
В идеале вы должны использовать метод 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);
Ответ 2
Использование 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>');
Ответ 3
Вместо замены всего на innerHTML попробуйте:
document.body.appendChild(myExtraNode);
Ответ 4
улучшая работу @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);
Ответ 5
Попробуйте сделать
document.body.innerHTML += '<div style="position:absolute;width:100%;height:100%;opacity:0.3;z-index:100;background:#000;"></div>'
Ответ 6
Лучший и лучший способ - создать элемент и добавить его к тегу body
.
Второй способ - сначала получить свойство innerHTML
body
и добавить код с ним. Например:
var b = document.getElementsByTagName('body');
b.innerHTML = b.innerHTML + "Your code";
Ответ 7
Вы можете создать свой HTML-код div
и установить его непосредственно в body
(или любой элемент) с помощью следующего кода:
var divStr = '<div class="text-warning">Some html</div>';
document.getElementsByTagName('body')[0].innerHTML += divStr;