JavascriptProva

domenica 31 marzo 2013

Posizionamento in libreria della funzione creaCaselle, e successivi aggiustamenti.

Ora devo isolare la funzione che crea un gruppo di caselle... e porla in libreria.

Vediamo come si può fare...

Ecco: isolato il codice, e creata una funzione avente per parametri il numero totale di caselle e l'altezza della colonna (se per numero ho 10 e per altezza della colonna ho 3, mi creerà tre colonne da 3 caselle più una di una casella... e così via...
function CreaCaselle(numero,altezzaColonna){
        var casella;
 for(var n=0;n<numero;n++){  
  //codice che crea una casella di tipo div e l'appende al documento
  casella=document.createElement("div");
  document.body.appendChild(casella);
  
  //codice che "conforma" la casella attribuendole una classe del CSS
  casella.className="casella";
  
  //Codice che stabilisce le coordinate della casella in base all'altezza della colonna
  casella.style.top=(EN(casella.currentStyle.height)*(n%altezzaColonna))+"px";
  casella.style.left=(EN(casella.currentStyle.width)*(Math.floor(n/altezzaColonna)))+"px";  
 }
}
La posso mettere nella libreria, adesso.

Ci metto anche la funzione che crea la proprietà indexOf per i vecchi browser IE:
Array.prototype.indexOf=function(oggetto){
 for(var i=0;i<this.length;i++){
  if(this[i]==oggetto) return i;
 }
 return -1;
}
Così facciamo un po' d'ordine e la pagina principale diventa così (senza il problema degli Array e delle date, ancora):
<html>
<head>
<style>
.casella{
 border:1px solid blue;
 width:120px;
 height:15px;
 font-size:8px;
 position:absolute;
}
</style>

<script src="../librerie/funzioni.js"></script>
<script>
window.onload=main;

function main(){ 
 CreaCaselle(20,6); 
}
</script>
</head>
<body>
</body>
</html>

Però bisogna specificare nei parametri della funzione CreaCaselle anche la classe del foglio di stile che si vuole dare alle caselle: essa non può essere predefinita nella funzione!
Poca difficoltà nel fare questo: modifichiamo in modo che il nome della classe venga passato come parametro.
function CreaCaselle(numero,altezzaColonna,classe){
 var casella;
 for(var n=0;n<numero;n++){  
  //codice che crea una casella di tipo div e l'appende al documento
  casella=document.createElement("div");
  document.body.appendChild(casella);
  
  //codice che "conforma" la casella attribuendole una classe del CSS
  casella.className=classe;
  
  //Codice che stabilisce le coordinate della casella in base all'altezza della colonna
  casella.style.top=(EN(casella.currentStyle.height)*(n%altezzaColonna))+"px";
  casella.style.left=(EN(casella.currentStyle.width)*(Math.floor(n/altezzaColonna)))+"px";  
 }
}
cosicchè, avendo due stili nella sezione CSS, posso, variando il parametro, avere due formati completamente diversi delle mie caselle:
<html>
<head>
<style>
.casella{
 border:1px solid blue;
 width:120px;
 height:15px;
 font-size:8px;
 position:absolute;
}

.casella2{
 border:1px solid red;
 width:300px;
 height:20px;
 font-size:8px;
 position:absolute;
}
</style>

<script src="../librerie/funzioni.js"></script>
<script>
window.onload=main;

function main(){ 
 CreaCaselle(20,6,"casella2"); 
}
</script>
</head>
<body>
</body>
</html>
Ecco, cambiando la stringa passata come parametro posso far sì che le caselle abbiano lo stile casella o casella2.

Nessun commento:

Posta un commento