Newsgroup: it.comp.lang.javascript
Titolo: onmouseover al volo

Se da HTML in un <div> posso scrivere:
  <div id="mydiv" class="..." onmouseover="foo(this)">
come faccio da javascript ad assegnare quel onmouseover? Cioè come
faccio a tradurre quel "this"?
Ho provato con:
  document.getElementById("mydiv").onmouseover=function()
{ foo(this); };
ma poi l'elemento non si comporta come dovrebbe...
Dove sbaglio?
Grazie in anticipo!

Ho risolto!!!
La mia funzione foo() era definita come:
function foo(el)
{
  el.dosomething();
}
e questo andava bene per essere usata da html; in "el" ci finiva
quello che passavo da html con "this". Ma volendola utilizzare da JS,
ho rimosso il parametro el dagli argomenti e dal codice, sostituendolo
direttamente con "this":
function foo()
{
  this.dosomething();
}
Oddio, avrei potuto anche lasciare l'argomento el e trasformare la
funzione in:
function foo(el)
{
  if (el == undefined) el = this;
  el.dosomething();
}
ma ormai è andata :)
Anzi quasi quasi ci provo e vedo se funge uguale...

Niente, la tecnica di assegnare el = this non va... resto con this e
stop :D

 ma poi l'elemento non si comporta come dovrebbe...
E' corretto, l'errore sta eventualmente altrove.
-- 
"Se c'è qualcosa di più importante del mio ego su questa nave,
la voglio catturata e fucilata."

 stop :D
Questo perché "el" non č necessariamente undefined, anche se non glielo
passi tu. :) Soprattutto se il browser si comporta bene.
Puoi verificarlo sempre con il buon e vecchio alert:
function foo(el){
        alert ( typeof el == "undefined" )
        alert( el );
}
Per fare quello che vuoi te ci sono diversi approcci; quello piů
semplice per te puň essere verificare se "this" č "window":
function foo(el){
        if ( this != window )
                el = this;
        /* do something with "el" */
}
anche se č un po' troppo empirica come cosa; ma giusto per darti
un'idea. :)
-- 
"Se c'č qualcosa di piů importante del mio ego su questa nave,


 }
invece che differenza ci sarebbe se avessi fatto:
document.getElementById("mydiv").onmouseover = new Function('foo(this)');






Non capisco cosa mi stai chiedendo: se la differenza che c'č tra
dichiarare una funzione con la prima sintassi, o istanziarla con
la seconda; oppure l'effetto che queste due possono avere quando
si passano a un event-handler.
La seconda risposta, č ovviamente subordinata alla prima.
La prima, dovresti conoscerla. E se non la conosci: RTFM. :)
Guarda, questo acronimo non l'ho praticamente mai usato, ma dopo
una settimana a ripeterti di buttare un occhio alle reference, e
*poi* eventualmente chiedere al NG in caso di dubbi...
Ai niubbi, e le prime volte, lascio correre. Ma tu un niubbo non
lo sei, e non č la prima volta. :)
-- 
~ "Solo i morti hanno visto la fine della guerra."
(Platone)

 lo sei, e non è la prima volta. :)
gia', io ho una conoscenza della materia sufficiente e dal momento che le
cose (soprattutto in informatica) si possono fare in 18 modi differenti, e
un modo bene o male l'ho quasi sempre trovato, non ho approffondito con gli
anni le peculiarità (piu' o meno tali) del linguaggio..
ripeto che un'occhiata ce l'avevo data e anche adesso che l'ho fatto un po'
piu' approfonditamente dovrò fare delle prove per capire meglio e sono
sicuro di non farcela
per questo, e non solo per pigrizia, ti chiedevo gentili spiegazioni o link
differenti dalla refernce di mozilla

 differenti dalla refernce di mozilla
Ottimo, qui hai usato un termine interessante: "differenti". E io ti
chiedo: "Ma differenti rispetto a *cosa*?".
La tua domanda sarebbe dovuta essere qualcosa del tipo:
"Senti, ho questo dubbio. Leggendo la reference di Mozilla, e quella
Microsoft, non ho ben capito cosa intendono dire con XX (http://...)
Ho fatto anche delle prove, ed il risultato è XX. Ne deduco che XX è
così, ma a me sembrerebbe XX."
O roba del genere. Come vedi, è ben diversa da quella posta da te.
-- 
~ "Finestre, finestre, finestre! Sennò prevalgono i muri."
(Marco Paolini)


se avro' problemi e/o bisogno di delucidazioni, ti faccio sapere...

 oh, non ero ancora arrivato qui:
*Sospiro*
"..Ci vuol pazienza.." ;P
P.S.
Ricordati che la reference su Mozilla č si la reference di Javascript,
ma tu su web non programmi *solo* usando Javascript... magari! IE, usa
JScript, e lo sai che č differente. Quindi, almeno fintanto IE rimane,
ahinoi, il browser piů usato, ricordati di dare una lettura anche alla
reference Microsoft. Sempre. Possono esserci delle differenze (come no
ovviamente), ma l'approccio dovrebbe essere sempre questo.
-- 
~ "Non si chiama coraggio se non hai paura."
("Bounce")