JavaScript - no me reconoce una variable como objeto

 
Vista:
Imágen de perfil de david

no me reconoce una variable como objeto

Publicado por david (11 intervenciones) el 20/11/2014 18:01:33
La idea del ejercicio es pedir al usuario que introduzca un nombre de un objeto como: screen, document, etc para sacar sus propiedades.
Si pongo directamente el objeto el ejercicio funciona correctamente si lo pido mediante una variable no funciona.
Gracias por la ayuda
Os pongo el ejercicio

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
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>EJERCICIO OBLIGATORIO MODULO 6</title>
</head>
<body>
	<h2>Ejercicio Módulo 6</h2>
    <h4>Tabla con las propiedades del objeto introducido por el usuario</h4>
 
    <table id="tabla" border="1"></table>
 
	<script type="text/javascript">
		var objeto = {};
		objeto = prompt("Introduce el nombre del objeto (window, this.location, document, screen, ...:");
		if ((typeof objeto === "object"))
			{
			var tabla = document.getElementById("tabla");
			var i;
			for (i in objeto)
				{
				if ((typeof objeto[i] === "function") || (typeof objeto[i] === "object"))
					{
					tabla.innerHTML += "<tr><td>" + i + "</td><td> = valor no imprimible</td></tr>";
					}
				else
					{
					tabla.innerHTML += "<tr><td>" + i + "</td><td> = " + objeto[i] + "</td></tr>";
					}
				}
			}
		else
			{
			alert("El valor introducido no es un objeto");
			}
 
	</script>
</body>
</html>
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

no me reconoce una variable como objeto

Publicado por martin (45 intervenciones) el 20/11/2014 18:57:37
Proba con eval
ejemplo

1
2
3
4
5
6
7
8
9
10
var objeto = {};
var str_obj_name = '';
var str_code           = '';
 
str_obj_name = prompt("Introduce el nombre del objeto (window, this.location, document, screen, ...:");
str_var_code = 'objeto = '+str_obj_name+';';
eval(str_var_code);
 
if ((typeof objeto === "object"))
{...etc etc

No se cuando eval falla si corta el flujo/curso de la función, con lo cual tendrias que aplicar un try catch o algo por el estilo.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de david

no me reconoce una variable como objeto

Publicado por david (11 intervenciones) el 20/11/2014 19:59:14
Lo pruebo y te digo.
Gracias
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 david

no me reconoce una variable como objeto

Publicado por david (11 intervenciones) el 20/11/2014 20:07:39
va perfecto.
no se si lo he entendido pero creo que esto es lo que hace ese codigo.
Lo que hace es meter en una variable string la instruccion de asignar a la variable objeto el contenido introducido por pantalla y luego con eval, evalua el contenido y lo ejecuta
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 david

no me reconoce una variable como objeto

Publicado por david (11 intervenciones) el 21/11/2014 19:56:08
me funciona pero si el valor que introduzco no es un objeto deberia salir un mensaje de error por pantalla y no sale.
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>EJERCICIO OBLIGATORIO MODULO 6</title>
<style type="text/css">
body	{
		background-color: #E1F5A9;
		color: #088A4B;
		}
 
table 	{
		padding: 0px;
		margin: 0px;
		border-spacing: 0px;
		font-family: Arial, Helvetica, sans-serif;
		font-size: 0.8em;
		border-top-width: 1px;
		border-top-style: solid;
		border-top-color: #333;
		}
 
td 		{
		padding: 0.9em;
		border-bottom-width: 1px;
		border-bottom-style: solid;
		border-bottom-color: #088A4B;
		background-color: #F0F0F0;
		}
 
</style>
</head>
<body>
	<h2>Ejercicio Módulo 6</h2>
    <h4>Tabla con las propiedades del objeto introducido por el usuario</h4>
 
    <table id="tabla" border="1"></table>
 
	<script type="text/javascript">
		var x = 0;
		var objeto = {};
		var nombre_objeto = '';
		var literal_codigo = '';
		nombre_objeto = prompt("Introduce el nombre del objeto (window, this.location, document, screen, ...:");
		literal_codigo = 'objeto = '+nombre_objeto+';';
		alert(literal_codigo);
		eval(literal_codigo);
 
		if (typeof objeto === "object")
			{
			var tabla = document.getElementById("tabla");
			x = x + 1;
			var i;
			for (i in objeto)
				{
				if ((typeof objeto[i] === "function") || (typeof objeto[i] === "object"))
					{
					tabla.innerHTML += "<tr><td>" + i + "</td><td> = valor no imprimible</td></tr>";
					}
				else
					{
					tabla.innerHTML += "<tr><td>" + i + "</td><td> = " + objeto[i] + "</td></tr>";
					}
				}
			}
		else
			{
			alert("El valor introducido no es un objeto");
			}
	</script>
</body>
</html>
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

no me reconoce una variable como objeto

Publicado por martin (45 intervenciones) el 22/11/2014 15:21:18
Por eso te decia de poner un try, por otro lado veo inicializas a objeto como un objeto propiamente dicho,mejor inicializalo como null , objeto = null;

supongo si eval falla ese objeto es null o basura nunca va ser un object.

SAludos.
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