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