Newsgroup: it.comp.lang.javascript
Titolo: Differenze fra Mozilla e IE

In uno script JS ho inserito una stringa come la seguente:
document.all.conto.innerText = Stop;
Tutto funziona (già da svariato tempo) su IE. Testando le pagine su altri
browser come Mozilla e Netscape mi sono accorto (tramite la consolle
javascript) che questa riga provoca un errore con questi browser.
document.all has no properties
Mi potete spiegare (o consigliatemi dove cercare informazioni) a cosa è
dovuto tale problema?
--
Carmine Santoro
carmi...@yahoo.it
www.puntodidomanda.it

 dovuto tale problema?
document.all e' una collection proprietaria di IE. Non fa parte di alcuno
standard, e quindi come tale non e' riconosciuta.
Inoltre, neppure innerText esiste come standard, ne' e' supportato da altri
browser (al contrario, ad esempio, di innerHTML.. che sebbene non sia uno
standard e' supportato).
Supponendo che conto sia un div di questo tipo:
<div id="conto">&nbsp;</div>
e secondo gli standard w3c, la tua istruzione diverrebbe:
document.getElementById("conto").firstChild.nodeValue=Stop;
-- 
ZER0://coder.gfxer.web-designer/
~ Io non soffro di pazzia, ne godo ogni minuto.
(I don't suffer from insanity, I enjoy every minute of it)
on air ~ "Maki Kimura - Beyond The Bounds"

 document.getElementById("conto").firstChild.nodeValue=Stop;
Innanzi tutto grazie mille per la spiegazione il problema č che non funziona
nemmeno adesso. Io ho scritto:
.
.
.
document.getElementById("stringa").firstChild.nodeValue = "Da " + strData +
" sono trascorsi";
document.getElementById("Anni").firstChild.nodeValue = anni + " Anni";
document.getElementById("Mesi").firstChild.nodeValue = mesi + " Mesi";
document.getElementById("Giorni").firstChild.nodeValue = giorni + " Giorni";
document.getElementById("Settimane").firstChild.nodeValue = settimane +"
Settimane";
document.getElementById("Ore").firstChild.nodeValue =  ore + " Ore";
document.getElementById("Minuti").firstChild.nodeValue = minuti  +" Minuti";
document.getElementById("Secondi").firstChild.nodeValue = secondi + "
Secondi";
.
.
.
<tr><td colspan="9"><div id="stringa"></div></td><td></td></tr>
<tr><td colspan="9"><div id="Anni"></div></td><td> </td></tr>
<tr><td colspan="9"><div id="Mesi"></div></td><td> </td></tr>
<tr><td colspan="9"><div id="Settimane"></div></td><td> </td></tr>
<tr><td colspan="9"><div id="Giorni"></div></td><td> </td></tr>
<tr><td colspan="9"><div id="Ore"></div></td><td> </td></tr>
<tr><td colspan="9"><div id="Minuti"></div></td><td> </td></tr>
<tr><td colspan="9"><div id="Secondi"></div></td><td></td></tr>
.
.
.
E adesso l'errore che mi viene fuori, su Mozilla, č:
document.getElementById("stringa").firstChild has no properties.
:-((((((

 :-((((((
Zer0 ha volutamente messo un &nbsp; ... ci sara' un motivo no?
(soluzione: si forza il browser a _creare_ un nodo child)
-- 
artemis.alpeia
Si avvisano gli inquilini della scala D che piove

 document.getElementById("conto").firstChild.nodeValue=Stop;
Facendo ulteriori prove ho notato che scrivendo cosě...
document.getElementById("conto").innerHTML = Stop;
Tutto funziona correttamente, perň mi sembra di aver capito che anche in
questo modo la funzione non č scritta secondo lo standardo w3C, quindi come
posso fare?

 <tr><td colspan="9"><div id="stringa"></div></td><td></td></tr>
Appunto.
Sarebbe dovuto essere:
 <tr><td colspan="9"><div id="stringa">&nbsp;</div></td><td></td></tr>
-- 
ZER0://coder.gfxer.web-designer/
~ Plagiarism is copying from one source;
research is copying from two or more
(Wilson Mizner)


 questo modo la funzione non è scritta secondo lo standardo w3C
Infatti, ma e' innerHTML e' cmq una proprieta' disponibile su tutti i
browser moderni; nonostante non sia uno standard.
Nel tuo caso e' cmq preferibile usare la sintassi firstNode.nodeValue.
-- 
ZER0://coder.gfxer.web-designer/
~ "Lo dice il buon senso, ma il buon senso non e' uno standard".
(Jeffrey Zeldman)


MITICIIIIIIII
:-)))))))
Grazie 1000.
Anzi Grazie 1000000