JavascriptProva

lunedì 20 maggio 2013

Funzioni successive al menu.

Una volta che siamo usciti dal menu, abbiamo:
  • La casella il cui click ha evocato il menu
  • Le ccrdinate dell'evento che ha evocato il menu
  • L'evento click sul menu.
Ora bisogna inserire sulla casella chiamante il contenuto del menu.
Come fare?

Funzione CreateMenu, ultima evoluzione.

Ecco la nuova versione della funzione che crea il menu:
//funzione che crea il menu popup. Funzione è ciò che si vuole che accada quando si clicca sul Menu.
function CreaMenu(evento,mouseSopra,mouseFuori,funzione){
 var casellaCliccata=evento.srcElement;
 var coordinataX=evento.clientX;
 var coordinataY=evento.clientY
 Mnu=document.createElement("div");
 Mnu.id="menu";
 Mnu.onmouseover=mouseSopra;
 Mnu.onmouseout=mouseFuori;
 Mnu.className="Menu";
 Mnu.innerHTML=TestoDelMenu;
 document.body.appendChild(Mnu);
 Mnu.style.left=evento.clientX+"px";
 Mnu.style.top=evento.clientY+"px";
 
 Mnu.onmousedown=function(){
  document.body.removeChild(Mnu);
  funzione(event,casellaCliccata,coordinataX,coordinataY)
 };
}
La funzione accetta come parametri l'evento che l'ha evocata, la funzione da eseguire al MouseOver, la funzione da eseguire al MouseOut, e la funzione da eseguire all'evento MouseDown sul menu.
A questa funzione vengono forniti, quando chiamata, i parametri della casella cliccata all'evento chiamante il menu e delle sue coordinate, oltre all'evento del click sul menu.

domenica 19 maggio 2013

Ricostruendo la funzione che crea i menu

Bene.
Ho troncato il programma.

Adesso devo creare una funzione che mi crei un menu.

Ho la posizione del mouse.
Ma la passo ugualmente come parametro.
Ecco la funzione finora:
function CreaMenu(evento,mouseSopra,mouseFuori){
 
 Mnu=document.createElement("div");
 Mnu.id="menu";
 Mnu.onmouseover=mouseSopra;
 Mnu.onmouseout=mouseFuori;
 Mnu.className="Menu";
 Mnu.innerHTML=TestoDelMenu;
 document.body.appendChild(Mnu);
 Mnu.style.left=event.clientX+"px";
 Mnu.style.top=event.clientY+"px";
}
Conviene passare alla funzione che crea il menu anche la casella che è stata cliccata.
Passando l'evento, si passano sia le coordinate sia la casella.
Dunque la funzione che crea il menu conosce sia le coordinate sia l'elemento bersaglio dell'evento.


Ecco come ho ricostruito la funzione finora:
//funzione che crea il menu popup. Funzione è ciò che si vuole che accada quando si clicca sul Menu.
function CreaMenu(evento,mouseSopra,mouseFuori){
 var casellaCliccata=evento.srcElement;
 var coordinataX=evento.clientX;
 var coordinataY=evento.clientY
 Mnu=document.createElement("div");
 Mnu.id="menu";
 Mnu.onmouseover=mouseSopra;
 Mnu.onmouseout=mouseFuori;
 Mnu.className="Menu";
 Mnu.innerHTML=TestoDelMenu;
 document.body.appendChild(Mnu);
 Mnu.style.left=evento.clientX+"px";
 Mnu.style.top=evento.clientY+"px";
 
 Mnu.onmousedown=function(){
  var menuCliccato=event.srcElement;
  casellaCliccata.innerHTML=menuCliccato.innerHTML;
 };
}