Niestety coś jest nie tak. Ten najważniejszy element szablonu wygląda na razie tak:
Content-in przechowuje zawartość. Zrobiłem to rozwiązanie, gdyż późniejsze użycie dopełnienia nie zmieni rozmiaru głównego pojemnika (content) i nie wysypie szablonu. Ale to tak BTW
Problem w tym, że przesyłana zawartość strony (w sensie sam tekst, umieszczany w content_in) nie jest przetwarzany jako HTML. W skrócie przesyłane <b>tekst</b> nie wyświetla się jako tekst, ale jako <b>tekst</b>.
Druga sprawa, to że nie działa czyszczenie elementu. Wrzucana zawartość jest wyświetlana razem z nagłówkiem zawartości i akapitem pod nagłówkiem.
I tak, kod napisany przeze mnie wygląda tak: (fragment)
Kod
var content = jsonData.content;
var contentEl = document.getElementById('content_in');
replaceText(contentEl, content);
var contentEl = document.getElementById('content_in');
replaceText(contentEl, content);
Oraz gotowiec z książki:
Kod
function replaceText(el, text) {
if (el != null) {
clearText(el);
var newNode = document.createTextNode(text);
el.appendChild(newNode);
}
}
function clearText(el) {
if (el != null) {
if (el.childNodes) {
for (var i = 0; i < el.childNodes.length; i++) {
var childNode = el.childNodes[i];
el.removeChild(childNode);
}
}
}
}
if (el != null) {
clearText(el);
var newNode = document.createTextNode(text);
el.appendChild(newNode);
}
}
function clearText(el) {
if (el != null) {
if (el.childNodes) {
for (var i = 0; i < el.childNodes.length; i++) {
var childNode = el.childNodes[i];
el.removeChild(childNode);
}
}
}
}
Podejrzewam, że html jest przetwarzany tylko podczas ładowania strony. Dlatego znaczniki nie są przerabiane. Jest jakiś sposób na załatwienie tego? Poza tym nie wiem dlaczego cały content_in nie jest czyszczony. Napisali, że clearText() czyści także węzły elementów, a nie tylko tekstu i muszę się z tym zgodzić, bo nie sprawdza, czy węzeł jest tekstem czy elementem.