JavaScript - Si permuto/cambio de posición una función,no me funciona.Ayuda

 
Vista:
sin imagen de perfil

Si permuto/cambio de posición una función,no me funciona.Ayuda

Publicado por Leon (1 intervención) el 10/09/2018 23:16:57
Cree un código simple que es como un test de animales.La cuestión es que tengo 2 funciones javascript, conectadas con html.El problema esta en <script> ,cuando si quiero poner una función en este orden.

Para que funcione;
1° evaluar()
2° num(respuesta,animal=null)

De esta forma no funciona;
1°num(respuesta,animal=null)
2° evaluar()

Les copio el codigo,guardenlo con la extención .html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<!DOCTYPE html>
<html>
<head>
	<title>Botones que toman parametros</title>
</head>
<body>
	<h3>Que animal es este?</h3><br>
   <img alt="Jirafa" src="https://cdni.rt.com/actualidad/public_images/2018.02/article/5a96deed08f3d9231c8b4567.jpg"  width="30%" height="30%"><br>
  <button onclick="num(true,'Jirafa')">Jirafa</button><br>
  <button onclick="num(false)">Elefante</button><br>
  <button onclick="num(false)">Leon</button><br>
 
	<h3>Que animal es este?</h3><br>
   <img alt="Leon" src="https://i.ytimg.com/vi/k7IsCoLP2PA/maxresdefault.jpg"  width="30%" height="30%"><br>
  <button onclick="num(false)">Elefante</button><br>
  <button onclick="num(false)">Jirafa</button><br>
  <button onclick="num(true,'Leon')">Leon</button><br>
 
 
	<h3>Que animal es este?</h3><br>
   <img alt="Elefante" src="https://www.nationalgeographic.es/sites/spain/files/styles/image_885/public/2928.600x450.jpg"  width="30%" height="30%"><br>
  <button onclick="num(false)">Jirafa</button><br>
  <button onclick="num(false)">Leon</button><br>
  <button onclick="num(true,'Elefante')">Elefante</button><br>
  <br><br><br>
  <button onclick="evaluar()">Evaluar conocimientos</button>
 
  <script type="text/javascript">
 
		var puntos=0;
 
 
 
	function evaluar(){
		alert("respuestas "+puntos+" de 3");
		}
    function num(respuesta,animal=null){
      if(respuesta){
        alert("respuesta correcta,"+animal);
        puntos++;
      }
 
	}
  </script>
</body>
</html>



El problema esta en cambiar el orden de las funciones.


1
2
3
4
5
6
7
8
9
10
11
12
var puntos=0;
 
function evaluar(){
    alert("respuestas "+puntos+" de 3");
}
function num(respuesta,animal=null){
  if(respuesta){
    alert("respuesta correcta,"+animal);
    puntos++;
  }
 
}


Espero respuesta urgente.Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.162
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Si permuto/cambio de posición una función,no me funciona.Ayuda

Publicado por xve (2100 intervenciones) el 11/09/2018 08:50:46
Hola Leon, la verdad es que no se muy bien donde esta el problema, pero he probado tu código con las funciones así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script type="text/javascript">
 
	var puntos=0;
 
	function evaluar(){
		alert("respuestas "+puntos+" de 3");
	}
    function num(respuesta,animal){
      if(respuesta){
        alert("respuesta correcta,"+animal);
        puntos++;
      }
 
	}
</script>

y así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script type="text/javascript">
 
	var puntos=0;
 
    function num(respuesta,animal){
      if(respuesta){
        alert("respuesta correcta,"+animal);
        puntos++;
      }
 
	}
	function evaluar(){
		alert("respuestas "+puntos+" de 3");
	}
</script>

y me ha funcionado de las dos maneras!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JESUS DAVID ARIZA ROYETH
Val: 34
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Si permuto/cambio de posición una función,no me funciona.Ayuda

Publicado por JESUS DAVID ARIZA ROYETH (10 intervenciones) el 11/09/2018 16:59:27
Igualmente de ambas formas en el navegador Chrome me funciona
tanto la primera
1° evaluar()
2° num(respuesta,animal=null)

como la segunda permutación
1°num(respuesta,animal=null)
2° evaluar()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 5
Ha disminuido su posición en 29 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Si permuto/cambio de posición una función,no me funciona.Ayuda

Publicado por Ismael (10 intervenciones) el 12/09/2018 22:32:35
Hola,
creo que funciona correctamente, a excepción de:

Que tenéis que tener cuidado en javascript con las funciones y los parámetros opcionales, como en tu código, que haces:

1
2
3
4
5
6
function num(respuesta,animal=null){
  if(respuesta){
    alert("respuesta correcta,"+animal);
    puntos++;
  }
 }

hay navegadores que no es compatible la asignación de valores por defecto en su definición, como creo que internet explorer...
lo que puedes comprobar, son los argumentos pasados a una función y ya según el número de parámetros ya actuas en consecuéncia.

Existe el objeto Arguments de javascript, que en tu caso te diría los argumentos pasados a tu función.
por ejemplo, por poner algo:

1
2
3
4
5
function num(){
  if(arguments.length>1){
    alert(arguments[1]);
  }
 }

puedes verlo mejor aquí.
https://www.w3schools.com/js/js_function_parameters.asp.

U otra solución, es pasarle siempre 2 parámetros a la función, para cuando no tengas la necesidad del segundo parámetro, puedes mandar el null.

Espero que ayude.

Un Saludo,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar