Om3*_*3ga 129 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>';
}
Run Code Online (Sandbox Code Playgroud)
Pet*_* T. 214
使用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);
Run Code Online (Sandbox Code Playgroud)
使用jQuery
$('body').append('<div style="position:absolute;width:100%;height:100%;opacity:0.3;z-index:100;background:#000;"></div>');
Run Code Online (Sandbox Code Playgroud)
Adi*_*ngh 142
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>';
Run Code Online (Sandbox Code Playgroud)
代替
document.body.innerHTML = '<div style="position:absolute;width:100%;height:100%;opacity:0.3;z-index:100;background:#000;"></div>';
Run Code Online (Sandbox Code Playgroud)
编辑: -
理想情况下,您应该使用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);
Run Code Online (Sandbox Code Playgroud)
Joa*_*ger 18
而不是用innerHTML替换所有内容尝试:
document.body.appendChild(myExtraNode);
Yas*_*ash 11
通过在一个地方收集所有解决方案来改进@Peter T的职位.
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}";
}
Run Code Online (Sandbox Code Playgroud)
使用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);
Run Code Online (Sandbox Code Playgroud)
Vib*_*ube 11
最被低估的方法是insertAdjacentElement
。您实际上可以使用一行添加 HTML。
document.body.insertAdjacentElement('beforeend', html)
Run Code Online (Sandbox Code Playgroud)
在这里阅读 - https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentElement
现代方法是使用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);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
308307 次 |
最近记录: |