dein dec2rom ist recht kompliziert, darin liegt wohl der fehler, mein FF bleibt nach jeder IX stehen.
Diese Variante ist kürzer und stabiler:
function dec2rom (x) {
var r="";
var n=[1000,"M",900,"CM",500,"D",400,"CD",100,"C",90,"XC",50,"L",40,"XL",10,"X",9,"IX",5,"V",4,"IV",1,"I"];
for (var i=0; i<n.length; i+=2) {
while (n[i]<=x) {
x-=n[i];
r+=n[i+1];
}
}
return (r=="")?"nihil":r;
}