Ich erstelle eine Light Box in reinem JavaScript. Dafür mache ich eine Überlagerung. Ich möchte dieses Overlay zum Body hinzufügen, aber ich möchte auch den Inhalt auf der Seite behalten. Mein aktueller Code fügt das Overlay-Div hinzu, entfernt aber auch den aktuellen Inhalt im Body. Wie füge ich ein div-Element hinzu und behalte den Inhalt auf dem Körper?
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
Om3ga
quelle
quelle
Antworten:
Probieren Sie es aus: -
http://jsfiddle.net/adiioo7/vmfbA/
Verwenden
anstatt
Bearbeiten: - Idealerweise sollten Sie die
body.appendChild
Methode verwenden, anstatt die zu änderninnerHTML
quelle
innerHTML
.Verwenden von Javascript
Verwenden von jQuery
quelle
appendChild()
undinsertBefore()
geben Sie noch mehr Flexibilität bei der Position des einzufügenden ElementsAnstatt alles durch innerHTML zu ersetzen, versuchen Sie:
document.body.appendChild(myExtraNode);
quelle
document.body
.Verbesserung des Beitrags von @Peter T durch Zusammenführen aller Lösungen an einem Ort.
Element.insertAdjacentHTML ()
Verwenden Sie
XPath
Suchen der Position des Elements im DOM-Baum und fügen Sie den angegebenen Text an einer angegebenen Position in ein XPath_Element ein. Versuchen Sie diesen Code über die Browserkonsole.quelle
Versuchen Sie es
quelle
Sie können Ihren
div
HTML-Code erstellen und ihnbody
mit folgendem Code direkt in (oder ein beliebiges Element) setzen:quelle
Der moderne Weg ist
ParentNode.append()
, wie folgt zu verwenden :quelle
Der beste und bessere Weg ist, ein Element zu erstellen und es an das
body
Tag anzuhängen . Der zweite Weg besteht darin, zuerst dieinnerHTML
Eigenschaft vonbody
abzurufen und Code hinzuzufügen. Beispielsweise:quelle
document.body
, wie bereits erwähnt, nicht die gesamte Seite neu schreiben, nur um ein Element anzuhängen.Hier ist ein sehr schneller Trick: Angenommen, Sie möchten ein p-Tag in das div-Tag einfügen.
Und das ist es.
quelle