Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: bermartinv en 24 de Febrero 2016, 14:18
-
Tengo una duda sobre la creación de los objetos con JavaScript. En los temas que aquí se desarrollan con el curso de javascript desde cero de aprenderaprogramar.com creábamos un objeto definiendolo asi:
cometa1 = new cometa(20,20,'Andromeda');
Pero imaginemos que queremos crear una acción con un botón y cada vez que se pulse ese boton se cree un nuevo objeto. He estado probando y no se puede asignar asi:
cometa[contador] = new cometa (20,20,'Andromeda');
porque es un vector y espera un resultado.
Estoy dandole vueltas y no consigo dar con la solución. A ver si alguien me ayuda.
Saludos
-
Hola bermartinv.
¿puedes poner el código que estas usando?
Porque no debería de haber problema para almacenar objetos dentro de un array.
-
Hola Pedro,
te mando este código como podría ser otro. Mi duda es como crear de una manera continua un array que contenga las cualidades de un objeto y otro problema es sacarlo por pantalla.
<!DOCTYPE>
<html>
<head>
<title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">
<style>
</style>
<script type="text/javascript">
window.onload = function(){
var usuarios = new Array();
var contador= 0;
document.getElementById("pulsador").addEventListener('click',nuevoUsuario);
document.getElementById("mostrar_usuarios").addEventListener('click',mostrarUsuarios);
}
function usuario(nombre,pais){
this.nombre = nombre;
this.pais = pais;
}
function nuevoUsuario(){
var nombre = prompt('Introduzca su nombre: ');
var pais = prompt ('Introduzca pais de procedencia :');
usuarios[contador] = new usuario(nombre,pais);
}
function mostrarUsuarios(){
for (var i=0;i<usuarios.length;i++){
for (x in usuarios){
document.getElementById("datos").innerHTML =x+':'+usuarios[x];
}
}
}
</script>
</head>
<body>
<button id ="pulsador"> Nuevo usuario </button>
<button id="mostrar_usuarios"> Mostrar usuarios</button>
<div id='datos'></div>
</body>
</html>
-
Te dejo el código retocado. ;)
<!DOCTYPE>
<html>
<head>
<title>Ejemplo aprenderaprogramar.com</title><meta charset="utf-8">
<style>
</style>
<script type="text/javascript">
var usuarios =[];
var contador = 0;
window.onload = function(){
document.getElementById("pulsador").addEventListener('click',nuevoUsuario);
document.getElementById("mostrar_usuarios").addEventListener('click',mostrarUsuarios);
}
function usuario(nombre,pais){
this.nombre = nombre;
this.pais = pais;
}
function nuevoUsuario(){
var nombre = prompt('Introduzca su nombre: ');
var pais = prompt ('Introduzca pais de procedencia :');
usuarios[contador] = new usuario(nombre,pais);
contador++;
}
function mostrarUsuarios(){
for(var i=0; i<usuarios.length; i++){
var datosUsuario = '';
for(x in usuarios[i]){
datosUsuario += usuarios[i][x] + ', ';
}
document.getElementById("datos").innerHTML += datosUsuario + '<br/>';
}
}
</script>
</head>
<body>
<button id ="pulsador"> Nuevo usuario </button>
<button id="mostrar_usuarios"> Mostrar usuarios</button>
<div id='datos'></div>
</body>
</html>
Las variables usuarios y contador las declaré con ámbito global, puesto que si las dejamos como las tenías, cada vez que metemos un usuario nuevo, siempre seria el único objeto que contendría el array.
Saludos.
-
Gracias Pedro, ahora me quedó claro ;)
Saludos