Newsgroup: it.comp.lang.javascript
Titolo: innerHTML Alternativo con W3C DOM

Ho un <dir id="prova"> impostato in una pagina all'interno di una 
tabella.
Quando cambio il contenuto con innerHTML, con IE va bene ma non con 
FF.
Come posso convertire l'istruzione:
document.getElementById("prova").innerHTML = "content";
nell'equivalente DOM da usare con FF? 
-- 
http://interno.altervista.org
http://midiquiz.altervista.org

 FF.
strano, innerHTML funziona correttamente con FF.
-- 
"e mai che mi sia venuto in mente
 di essere più ubriaco di voi
 di essere molto più ubriaco di voi"
									  F.D.A.

 nell'equivalente DOM da usare con FF?
L'alternativa DOM di FF è il createContextualFragment. Ti sconsiglio
però di usarlo al posto di innerHTML, in casi come questo.
-- 
~ "Il debito pubblico è abbastanza grande da badare a sé stesso."
(Ronald Regan)

 
non sempre purtroppo:
http://groups.google.com/group/it.comp.lang.javascript/browse_thread/
thread/70e207abc04ba92e
http://developer.mozilla.org/en/docs/DOM:element.innerHTML
"It should never be used to write parts of a table邑3C DOM methods 
should be used for that葉hough it can be used to write an entire 
table or the contents of a cell."


 wrote in
news:zdlh58ldmrih$.
d...@ID-171124.news.individual.net
: 

Scusami volevo scrivere:
<table>....<div id="prova"></div>....</table>
document.getElementById("prova").innerHTML = "<b>primo";
con IE va perfettamente con FF invece mi scrive la nuova stringa 
senza cancellare quella esistente così ogni volta che chiamo 
innerHTML accumula stringhe nel div "prova".
ho provato:
element = document.getElementById(elementid);
while (element.firstChild) {
	element.removeChild(element.firstChild);
}	
t = document.createTextNode("<div>" + content + "/<div>"); 
element.appendChild(t);
ma mi stampa
"<div>" + content + "/<div>"
come testo e non come codice html.
come ne esco fuori?


Ho cambiato strategia:
imposto una tabella:
echo "<table width=\"100%\" border=\"0\" cellspacing=\"0\" 
cellpadding=\"6\" bgcolor=\"#00486A\" id=\"prova\"><tr><td>\n";
uso questa istruzione per scrivere nella prima cella:
document.getElementById(prova).rows[0].cells[0].innerHTML = "<b>
primo"; 
questo sistema funziona perfettamente sempre con IE.
Con FF invece, non mi da più il problema della scrittura cumulativa, 
ma la prime due volte funziona bene poi non più, forse perché gli 
scrivo altre tabella all'interno della cella.
errore:
document.getElementById(elementid).rows has no properties


 come ne esco fuori?
Finché non spieghi il div com'č relazionato esattamente nella table,
non ti possiamo aiutare piů di tanto.
-- 
~ Confondi il mondo, sorridi tutti i lunedě!

 scrivo altre tabella all'interno della cella.
Andrebbe anche visto cos'è che vai a scrivere.
-- 
~ "La realtà è ciò che, quando smetti di crederle, non va via."
(Philip K. Dick)

 come testo e non come codice html.
Perché č appunto quel che gli hai detto di fare.


 
è vero
era un mio bug
inavvertitamente nella cella creava una tabella con lo stesso nome 
id della tabela principale, c'erano 2 prova insomma.
:( sorry.



Prova il seguente:
function scrivi(id,cn){
if (document.getElementById && !document.all){
rg = document.createRange();
el = document.getElementById(id);
rg.setStartBefore(el);
fr = rg.createContextualFragment(cn);
while (el.hasChildNodes())
el.removeChild(el.lastChild);
el.appendChild(fr);
}
else {document.getElementById(id).innerHTML = cn}
}
dove:
id = id del div
cn = contenuto (testo)