Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Me podrían ayudar a mejorar y entender este código?

Estas en el tema de Me podrían ayudar a mejorar y entender este código? en el foro de Javascript en Foros del Web. Hay un problema al dejar vacío el campo de numero, y es que me aparece undefined, quería saber si podría ser que al dejarlo vacío ...
  #1 (permalink)  
Antiguo 17/05/2015, 23:11
 
Fecha de Ingreso: mayo-2015
Mensajes: 1
Antigüedad: 8 años, 11 meses
Puntos: 0
Pregunta Me podrían ayudar a mejorar y entender este código?

Hay un problema al dejar vacío el campo de numero, y es que me aparece undefined, quería saber si podría ser que al dejarlo vacío la parte de las letras también lo este, no estoy muy familiarizado con varias funciones


<!DOCTYPE html>
<html>
<script>
var o=new Array("diez", "once", "doce", "trece", "catorce", "quince", "dieciséis", "diecisiete", "dieciocho", "diecinueve", "veinte", "veintiuno", "veintidós", "veintitrés", "veinticuatro", "veinticinco", "veintiséis", "veintisiete", "veintiocho", "veintinueve");
var u=new Array("cero", "uno", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve");
var d=new Array("", "", "", "treinta", "cuarenta", "cincuenta", "sesenta", "setenta", "ochenta", "noventa");
var c=new Array("", "ciento", "doscientos", "trescientos", "cuatrocientos", "quinientos", "seiscientos", "setecientos", "ochocientos", "novecientos");

function nn(n)
{
var n=parseFloat(n).toFixed(2); /*se limita a dos decimales, no sabía que existía toFixed() :)*/
var p=n.toString().substring(n.toString().indexOf(".") +1); /*decimales*/
var m=n.toString().substring(0,n.toString().indexOf(". ")); /*número sin decimales*/
var m=parseFloat(m).toString().split("").reverse(); /*tampoco que reverse() existía :D*/
var t="";

/*Se analiza cada 3 dígitos*/
for (var i=0; i<m.length; i+=3)
{
var x=t;
/*formamos un número de 2 dígitos*/
var b=m[i+1]!=undefined?parseFloat(m[i+1].toString()+m[i].toString()):parseFloat(m[i].toString());
/*analizamos el 3 dígito*/
t=m[i+2]!=undefined?(c[m[i+2]]+" "):"";
t+=b<10?u[b]:(b<30?o[b-10]:(d[m[i+1]]+(m[i]=='0'?"":(" y "+u[m[i]]))));
t=t=="ciento cero"?"cien":t;
if (2<i&&i<6)
t=t=="uno"?"mil ":(t.replace("uno","un")+" mil ");
if (5<i&&i<9)
t=t=="uno"?"un millón ":(t.replace("uno","un")+" millones ");
t+=x;
//t=i<3?t:(i<6?((t=="uno"?"mil ":(t+" mil "))+x):((t=="uno"?"un millón ":(t+" millones "))+x));
}

t+=" con "+p+"/100";
/*correcciones*/
t=t.replace(" "," ");
t=t.replace(" cero","");
//t=t.replace("ciento y","cien y");
//alert("Numero: "+n+"\nNº Dígitos: "+m.length+"\nDígitos: "+m+"\nDecimales: "+p+"\nt: "+t);
document.getElementById("esc").value=t;

}

</script>
<body>
numero: <input id="num" onkeyup="nn(document.getElementById('num').value); "><<br>
escrito: <input style="width: 40em;" id="esc">

</body>
</html>

Última edición por areshdz; 17/05/2015 a las 23:29

Etiquetas: entender, html, mejorar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:51.