Foros del Web » Programando para Internet » Javascript »

porque no funciona esto en firefox?

Estas en el tema de porque no funciona esto en firefox? en el foro de Javascript en Foros del Web. function Sumar(campo) { var suma; var elemento; elemento = document.getElementById(campo); suma =0; suma = eval(parseInt(elemento.value)+1); elemento.value=suma; } <img class="boton" src="./Imagenes/img_Mas.gif" width="13" onClick="Sumar('campo_input');" height="9"/> donde campo_input ...
  #1 (permalink)  
Antiguo 11/04/2007, 04:02
 
Fecha de Ingreso: mayo-2004
Mensajes: 180
Antigüedad: 20 años
Puntos: 2
porque no funciona esto en firefox?

function Sumar(campo)
{
var suma;
var elemento;
elemento = document.getElementById(campo);
suma =0;
suma = eval(parseInt(elemento.value)+1);
elemento.value=suma;
}

<img class="boton" src="./Imagenes/img_Mas.gif" width="13" onClick="Sumar('campo_input');" height="9"/>

donde campo_input es el nombre de un campo de tipo input. El caso es que al depurar con firebug me da el siguiente error:

elemento has no properties
Sumar("01151")Index.php (line 70)
onclick(click clientX=0, clientY=0)Index.php (line 1)
[Break on this error] suma = eval(parseInt(elemento.value)+1);
  #2 (permalink)  
Antiguo 11/04/2007, 04:37
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Re: porque no funciona esto en firefox?

Hola mickeyy

Estás usando getElementById, pero tiene puesto un nombre al input. Ponle también un id:

<input type="text" name="campo_input" id="campo_input" />

o cambia esta línea:

elemento = document.nombreFormu[campo];

Saludos,
  #3 (permalink)  
Antiguo 11/04/2007, 05:56
 
Fecha de Ingreso: abril-2002
Mensajes: 1.014
Antigüedad: 22 años
Puntos: 8
Re: porque no funciona esto en firefox?

Aparte de eso, a parseInt tienes que indicarle a parseInt el segundo parámetro (ponerlo a 10) para indicar que estás usando el sistema numérico decimal. Echa un vistazo :

http://www.w3schools.com/jsref/jsref_parseInt.asp
  #4 (permalink)  
Antiguo 11/04/2007, 06:36
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Re: porque no funciona esto en firefox?

Hola MikiBroki

Si se quiere el número en base decimal no es necesario poner nada como segundo parámetro, tal como se puede ver en el enlace que has puesto.

Saludos,
  #5 (permalink)  
Antiguo 11/04/2007, 06:55
 
Fecha de Ingreso: abril-2002
Mensajes: 1.014
Antigüedad: 22 años
Puntos: 8
Re: porque no funciona esto en firefox?

hmm.. es cierto... no sé si me expresé bien, fíjate en estas dos particularidades:

# If the string begins with "0x", the radix is 16 (hexadecimal)
# If the string begins with "0", the radix is 8 (octal). This feature is deprecated

Y échale un vistacillo a esto porque parseInt() tiene premio dependiendo de cómo introduzca los números el usurio :

Código:
//alert( typeof(num)  + " : " + num  );

var num = parseInt( 010 );     	 -> number :   8							
var num = parseInt( "010" );    --> number :   8							
var num = parseInt( 010, 10 );     --> number :   8
var num = parseInt( "010", 10 );   --> number :   10	

var num = parseInt( 0900 );   --> number :  900
var num = parseInt( 0900, 10 );  --> number :  900					
var num = parseInt( "0900" );    --> number :    0	
var num = parseInt( "0900", 10 );    --> number :  900
	
var num = parseInt( 0X900 );          --> number : 2304
var num = parseInt( 0X900, 10 );    --> number : 2304
var num = parseInt( "0X900" );       --> number : 2304
var num = parseInt( "0X900", 10 ); --> number :       0
|

En ese caso para validar "bien" la entrada de un usuario sería la última opción de cada grupo (salvo que introduzca por ejemplo algo como "200 100"). Es recomendable comprobar que toda la cadena contenga sólo dígitos (y tener cuenta el signo menos y decimales, en su caso)
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 08:29.