Salve a tutti.
Nel mio sito, per fini statistici ho creato una pagina php strutturata in una tabella HTML con per ogni elemento il nome dell'elemento e il numero di click.

Ora, anche per esercitazione, vorrei ordinare tutti gli elementi in ordine decrescente di click; per fare ciò, appena clicco in una sezione avvio una funzione javascript Ordina() che si occupa di ordinare gli elementi e stamparli nella nuova pagina.

La funzione funziona (scusate il gioco di parole) così:
1)definisco un'oggetto con i campi nome e clicks.
2)creo un'array di tutti questi oggetti.
3)assegno dei valori ai campi di questi oggetti direttamente leggendo la pagina HTML
4)procedo a ordinare

Il problema è che, secondo il browser, 9 è maggiore di 30, come è maggiore di quindici, per esempio. Cioè, paragona solo la prima cifra.

Esempio
questa è la pagina HTML:

Elemento 1: 3
Elemento 2: 15
Elemento 3: 9

e questo è uno spezzone di codice:

function elemento(snome, sclicks){
this.nome=snome;
this.clicks=sclicks;
}

function Ordina()
{
var mioarray = new Array();
mioarray[0] = new elemento("Elemento 1",document.getElementById("1").innerHTML);
mioarray[1] = new elemento("Elemento 2",document.getElementById("2").innerHTML);
mioarray[2] = new elemento("Elemento 3",document.getElementById("3").innerHTML);
var controllo = false;
var J;
var X = new elemento("boh",5);
do {
controllo=false;
for (J=0; J<2; J++)
if (mioarray[J].clicks<mioarray[J+1].clicks) {
X.nome=mioarray[J+1].nome;
X.visite=mioarray[J+1].clicks;
mioarray[J+1].nome=mioarray[J].nome;
mioarray[J+1].clicks=mioarray[J].clicks;
mioarray[J].nome=X.nome;
mioarray[J].clicks=X.clicks;
controllo=true;
}
}
while (controllo==true);
}


Nella lettura della pagina html non c'è nessun problema, ma nell'ordinamento dei click si infatti l'array verrà ordinato così:

Elemento 3: 9
Elemento 1: 3
Elemento 2: 15


Perchè mi fa questi brutti scherzi?