Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Linton en 3 Septiembre 2013, 21:35 pm



Título: [JS] "a.charAt is not a function", ¿por qué?
Publicado por: Linton en 3 Septiembre 2013, 21:35 pm
Hola, a ver si podéis iluminarme. Llevo trabajando desde las 6.30 de la mañana y ya no doy pie con bola.

He cogido hace un rato este problemilla: dar la parte entera de un número con decimales. Mi intento:

Código
  1. function digit(a){
  2.  
  3. var num = a;
  4. var cifra='';
  5. var cont=0;
  6.  
  7. while(num>1){
  8.  num=num/10;
  9.  cont++;
  10. }
  11. print(a + ' tiene ' + cont + ' enteros');
  12.  
  13. for(var i=0; i<cont; i++){
  14.  cifra = cifra + a.charAt(i);
  15. }
  16. print('La parte entera de ' + a + ' es ' + cifra);
  17. }
  18.  
  19. digit(...)

Pues no me admite la propiedad charAt, me sale este aviso: "Exception: TypeError: a.charAt is not a function in function digit".

Sin embargo el mismo código funciona cuando en vez de una función hago un simple script para números cogidos mediante prompt:

Código
  1. var a = prompt('Escribe un número con decimales');
  2. var num = a;
  3.  
  4. var cifra='';
  5. var cont=0;
  6. while(num>1){
  7.  num=num/10;
  8.  cont++;
  9. }
  10. print(a + ' tiene ' + cont + ' enteros');
  11.  
  12. for(var i=0; i<cont; i++){
  13.  cifra = cifra + a.charAt(i);
  14. }
  15.  
  16. print('La parte entera de ' + a + ' es ' + cifra);
  17.  

¿Dónde está el fallo? Gracias, un saludo.


Título: Re: [JS] "a.charAt is not a function", ¿por qué?
Publicado por: EFEX en 3 Septiembre 2013, 21:57 pm
Código
  1. digit('12124');
  2.  

?


Título: Re: [JS] "a.charAt is not a function", ¿por qué?
Publicado por: Eleкtro en 3 Septiembre 2013, 21:58 pm
¿Dónde está el fallo?

No manejo javascript pero la función charAt es para Strings, no para valores numéricos, imagino que por eso el prompt te funciona ya que devolverá un string.

EDITO: No sé si esta concatenación de métodos funcionará, como ya digo no manejo JS, pero ya captas la idea:
Código:
a.tostring.charAt(i)

PD: Solo hay que fijarse un poco más en las cosas, la propia función se llama "charAt", no "digitAt", y un valor numérico contiene dígitos, no caracteres.

Saludos


Título: Re: [JS] "a.charAt is not a function", ¿por qué?
Publicado por: #!drvy en 4 Septiembre 2013, 00:33 am
Como te ha dicho EleKtro, charAt espera un string, no un numero. Esa facil comprobacion la puedes hacer al ejecutar

Código
  1. 12345.chartAt(2);

Veras como te dice ILLEGAL token.

Código
  1. cifra = cifra + a.toString().charAt(i);

Saludos


Título: Re: [JS] "a.charAt is not a function", ¿por qué?
Publicado por: Linton en 4 Septiembre 2013, 08:12 am
Anoche después de apagar el ordenador caí en la cuenta de dónde estaba el fallo. ¡Muchas gracias a los tres por la confirmación!  :) :)


Título: Re: [JS] "a.charAt is not a function", ¿por qué?
Publicado por: 1mpuls0 en 4 Septiembre 2013, 17:12 pm
Anoche después de apagar el ordenador caí en la cuenta de dónde estaba el fallo. ¡Muchas gracias a los tres por la confirmación!  :) :)

y te quedaste con el placer de la duda?, en lo personal en ese momento habría encendido el pc y corregido el error  :xD

por cierto lo mismo pasa con substring() y length que posiblemente podría pensarse que aplican para un valor numérico.


Título: Re: [JS] "a.charAt is not a function", ¿por qué?
Publicado por: Linton en 4 Septiembre 2013, 19:32 pm
Uf ya casi ni veía, llevaba 15 horas seguidas con el ordenador y dejé las ansias personales para la jornada siguiente  ;D

Muchas gracias por el dato, un saludo.