Newsgroup: it.comp.lang.javascript
Titolo: document.createElement...

Perchè non vedo cio' che creo?
document.createElement('<div id="divToolTip" style="left:'+l+'px;
top:'+t+'px;">'+paramText+'</div>');
Il div ha il suo stylesheet di riferimento e funziona se lo inserisco
direttamnete nella pagina.
Perchè non vedo una ceppa???
Luigi
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 top:'+t+'px;">'+paramText+'</div>');
Primo, al createElement *devi* passare solo il nome del tag che stai
creando.
E lascia perdere IE che per sopperire ad alcuni suoi bug circa questo
metodo accetta anche la stringa intera; e segui la reference.
Secondo, hai solo *creato* l'elemento, non lo hai aggiunto al DOM del
documento, quindi nel documento il tuo elemento non esiste. Esiste solo in
memoria.
To sum up, stai usando il createElement come se l'innerHTML, ma sono
sostanzialmente due cose completamente differenti.
Con l'innerHTML, bene o male puo' anche andare bene quel codice:
document.body.innerHTML='<div id="divToolTip"
style="left:'+l+'px;top:'+t+'px;">'+paramText+'</div>';
Ma se usi le API standard del W3C, per far la stessa cosa devi:
//creo l'elemento:
var myDiv=document.createElement("div");
//setto le proprieta':
myDiv.id="divTooltip";
myDiv.style.left=l+"px";
myDiv.style.top=t+"px";
// creo un TextNode per inserirci del testo (attenzione, TESTO, non HTML)
// aggiungendolo immediatamente al mio elemento
myDiv.appendChild(document.createTextNode(paramText));
// aggiungo il mio elemento al DOM del documento, 
// agganciandolo all'elemento body
document.body.appendChild(myDiv);
// elimino il riferimento, se non mi serve piu'
myDiv=null;
-- 
ZER0://coder.gfxer.web-designer/
~ Come devo regolare la stampante laser per stordire?
(How do I set a laser printer to stun?)

 
uscito di scope mi immagino che ogni riferimento venga distrutto, no?
Daniele




La risposta poco professionale che darei ad un'amico sarebbe "Eh, si, bella
figa.. troppo comodo" :)
Tornando seri, e' sempre preferibile impostare a null le variabili quando
si decide di non usarle piu', in modo che il garbage collector del
linguaggio in questione (e JS dovrebbe implementare una logica simile) sa
quando distruggere tale variabile.
Mi sovviene un'aneddoto dello Scartabelli, che su C# (mi pare) non aveva
impostato a null un oggetto che si riferiva ad un immagine, proprio perche'
pensava la tua medesima cosa; ma cosi' facendo il file immagine rimaneva
"lockato" (e' passato del tempo, ma a grandi linee mi pare che il concetto
fosse questo).
Ricordati che in un'ottica di Reference Counting, un oggetto non viene
distrutto fintanto che ha un riferimento ad esso.
E anche se stiamo parlando in questo caso di un linguaggio di scripting, e'
sempre bene andarci coi piedi di piombo, soprattutto quando entrano in
gioco cose come ActiveXObject o oggetti complessi.
-- 
ZER0://coder.gfxer.web-designer/
~ "The demo effect, you don't expect"

 fosse questo).
Ti ricordi a meta'. Il problema era che anche distruggendo 
esplicitamente l'oggetto, chiamando dispose vari, chiedendo in ginocchio 
al garbage collector di partire, ecc. il file rimaneva in uso.
Non era li' la questione, il problema stava altrove.

 Non era li' la questione, il problema stava altrove.
Cioe'? Io ricordo bene che era quello, infatti impostando a null il
riferimento tutto funzio' bene.. Non e' che ci stiamo riferendo a due cose
diverse?
-- 
ZER0://coder.gfxer.web-designer/
~ Non esistono donne brutte. Dipende solo da quanta vodka bevi.
(proverbio russo)

 diverse?
A meno che non ci stiamo riferendo davvero a cose diverse, direi che 
ricordi tutto bene, ricerche comprese, tranne il finale.
Il mio problema non stava nella distruzione dell'oggetto, ma nella 
maniera in cui creavo e salvavo il file.
Poi se ho tempo vado a ripescare la prova che stavo facendo, anche 
perche' come sai su .net non ci sto mettendo mano in realta' solo adesso 
e vorrei capire cosa stava succedendo allora...

 maniera in cui creavo e salvavo il file.
Questo non lo ricordo proprio. Forse ci stiamo riferendo a due aspetti
diversi dello stesso applicativo?
-- 
ZER0://coder.gfxer.web-designer/
~ "L'unica persona che mi chiama con un numero che non conosco
e' il mio ragazzo." (Linda)