Ich muss den Text innerhalb eines DIV-Elements dynamisch festlegen. Was ist der beste, browser-sichere Ansatz? Ich habe Prototypen und Scriptaculous zur Verfügung.
<div id="panel">
<div id="field_name">TEXT GOES HERE</div>
</div>
So sieht die Funktion aus:
function showPanel(fieldName) {
var fieldNameElement = document.getElementById('field_name');
//Make replacement here
}
javascript
html
dom
sblundy
quelle
quelle
Antworten:
Ich würde die
update
Methode von Prototype verwenden, die einfachen Text, ein HTML-Snippet oder ein beliebiges JavaScript-Objekt unterstützt, das einetoString
Methode definiert .quelle
$("field_name").text("new text");
Sie können einfach verwenden:
quelle
element.innerHTML = "<script>doSomethingMalicious()</script>";
wird keine gute Idee sein.element.innerHTML = "& neither will this";
Aktualisiert für alle, die dies 2013 und später lesen:
Diese Antwort hat viel SEO, aber alle Antworten sind stark veraltet und hängen von Bibliotheken ab, um Dinge zu tun, die alle aktuellen Browser sofort tun.
Verwenden Sie Node.textContent, das in allen aktuellen Browsern bereitgestellt wird, um Text in einem div-Element zu ersetzen.
quelle
textContent
eine überlegene Methode istinnerHTML
: Sie ist schneller, sicherer und angemessener, wenn Sie nicht absichtlich versuchen, HTML-Markups einzufügen.Die Vorteile dieser Vorgehensweise:
Wenn ich eine Javascript-Bibliothek verwenden würde, würde ich jQuery verwenden und dies tun:
Beachten Sie, dass der Kommentar von @AnthonyWJones korrekt ist: "Feldname" ist keine besonders beschreibende ID oder Variablenname.
quelle
Eines der raffinierten Merkmale von Prototype ist, dass
$('field_name')
es dasselbe tut wiedocument.getElementById('field_name')
. Benutze es! :-)John Topleys Antwort mit der
update
Funktion von Prototype ist eine weitere gute Lösung.quelle
$
wird ein Artikel nach ID gesucht. Es ist nicht selektorbasiert wie jQuery. api.prototypejs.org/dom/dollarDie schnelle Antwort ist die Verwendung von innerHTML (oder der Aktualisierungsmethode des Prototyps, die so ziemlich dasselbe ist). Das Problem mit innerHTML ist, dass Sie dem zugewiesenen Inhalt entkommen müssen. Abhängig von Ihren Zielen müssen Sie dies mit anderem Code ODER tun
im IE: -
in FF: -
(Eigentlich von FF haben die folgenden in Code vorhanden)
Jetzt kann ich innerText nur verwenden, wenn Sie eine möglichst breite Browserunterstützung benötigen. Dies ist keine vollständige Lösung, aber innerHTML wird auch nicht im RAW verwendet.
quelle
Wenn Sie wirklich möchten, dass wir dort weitermachen, wo Sie aufgehört haben, können Sie Folgendes tun:
quelle
nodeValue ist auch eine Standard-DOM-Eigenschaft, die Sie verwenden können:
quelle
quelle
Wenn Sie dazu neigen, viel JavaScript auf Ihrer Website zu verwenden, macht jQuery das Spielen mit dem DOM extrem einfach.
http://docs.jquery.com/Manipulation
Macht es so einfach wie: $ ("# Feldname"). Text ("Ein neuer Text.");
quelle
Verwenden innertext wenn Sie nicht Struktur annehmen - Verwenden Sie Text # Daten vorhandenen Text aktualisieren Leistungstest
quelle
quelle
Hier ist eine einfache jQuery- Methode:
quelle
In HTML setzen Sie dies
In Javascript setzen Sie dies
quelle