EDIT:WOW. Tato otázka je již 12 let stará.
Jak někdo uvedl, od roku 2016 to lze provést s jednou vložkou:https://stackoverflow.com/a/69322509/80907
Originál:
Zajímalo by mě, jestli existuje způsob, jak změnit text čehokoli v HTML bez použití innerHTML.
Důvod, proč se ptám, je ten, že to W3C tak trochu odsuzuje. Vím, že je to hnidopišství, ale chci jen vědět, existuje nějaký způsob?
EDIT:Zdá se, že lidé špatně pochopili, na co se zde ptám:Chci najít způsob, jak efektivně změnit zobrazovaný text.
Pokud mám:
<div id="one">One</a>
innerHTML mi to umožňuje:
var text = document.getElementsById("one"); text.innerHTML = "Two";
A text na mé obrazovce se změní.
Nechci přidávat další text, přeji si změnit již existující text.
Odpověď
Doporučeným způsobem je manipulace s DOM, ale může to být docela upovídané. Například:
// <p>Hello, <b>World</b>!</p> var para = document.createElement('p'); para.appendChild(document.createTextNode('Hello, ')); // <b> var b = document.createElement('b'); b.appendChild(document.createTextNode('World'); para.appendChild(b); para.appendChild(document.createTextNode('!')); // Do something with the para element, add it to the document, etc.
UPRAVIT
V reakci na vaši úpravu, chcete-li nahradit aktuální obsah, jednoduše odstraníte stávající obsah a poté pomocí výše uvedeného kódu vyplníte nový obsah. Například:
var someDiv = document.getElementById('someID'); var children = someDiv.childNodes; for(var i = 0; i < children.length; i++) someDiv.removeChild(children[i]);
Ale jak řekl někdo jiný, doporučil bych místo toho použít něco jako jQuery, protože ne všechny prohlížeče plně podporují DOM a ty, které mají zvláštnosti, které interně řeší knihovny JavaScriptu. Například jQuery vypadá nějak takto:
$('#someID').html("<p>Hello, <b>World</b>!</p>");