parseInt() cerca di interpretare il parametro passato... se il primo carattere e' uno 0 assume che il dato sia in formato ottale... e si comporta di conseguenza.

Per evitare equivoci utilizza anche il secondo parametro della funzione con il quale puoi forzare la base di conversione:

intero = parseInt(numero_o_stringa, base)

Nel tuo caso metti 10.

ciao