duda javascript
4 seguidores
hola a todos, tengo el siguiente problema:
en una funcion le paso como parametro el nombre de un array, pero luego dentro de esa funcion no me recoje los valores del array :(
¿alguien sabe como se hace para que los recoja?
lo k tengo vendria a ser algo asi:
<code>vector1 = new Array();
vector1[0] = 'hola';
vector1[1] = 'adios';
vector2 = new Array();
vector2[0] = 'que tal';
vector2[1] = 'como estamos';
function miFuncion(nombreArray) {
window.alert(nombreArray[1]);
}
miFuncion('vector1');</code>
y me devuelve 'undefined' cuando quiero k me devuelva 'adios'
Please somebody help me!!!!!
Saludos!
sgiraldo
Alter Ebro
window.alert(eval(nombreArray + '[1]'));
Tienes q evaluar la variable nombreArray para que te coja el valor correcto
orange
Hay una más sencilla, quítale las comillas simples a la variable al llamar la función, así:
miFuncion(vector1);
Y te funciona tal y como lo tienes
sgiraldo
vaya... y yo liando la pajarraca jejeje.
Alter Ebro
gracias domestikos!
funciona perfectamente, pero lo he tenido que meter en la misma pagina porque si lo pilla desde un archivo .js no me hacia ni caso (?).
Gracias!!
Saludos.
meddle
la funcion puede estar en otro archivo, eso fijo. todo va a depender, esta claro, del evento onload. Si llamas a la funcion antes que se haya cargado te dara error, igual es lo que te ha pasado.
Alter Ebro
k kieres decir meddle? k si esta en el onLoad funciona o k no funciona?
yo si k tenia la llamada a la funcion desde el onLoad,
lo que tengo yo entendido es k si se hace en el 'onLoad' es lo mismo k hacerlo cuando la pagina se termina de cargar por lo tanto habra cargado ya los .js
¿estoy equivocado :( ? si es asi, cuando la llamo??
meddle
el problema que veo es que tu funcion tiene un argumento. Al llamar a una funcion desde onload debes tener cuidado, porque estas dos lineas de codigo no son lo mismo (estas vas en el js, no en el body):
onload=miFuncion;
es distinto a
onload=miFuncion(mivector);
La primera ejecutaria la funcion cuando todo estuviera cargado, pero le faltaria un argumento, y te daria error.
La segunda ejecuaria la funcion al leer esa linea, con lo que si los arrays no estan definidos te dara error.
Normalmente cuando quieres ejecutar funciones onload es mejor usar una funcion sin argumentos, y dentro de esa definir la llamada a la otra con argumentos. Ago como:
function init(){
miFuncion(vector1);
}
onload=init;
Esto es mas correcto. Tambien es mas correcto que usar onload="miFuncion(vector1)" en el body tag, porque de esta manera el html queda separado del javascript.
Espero no haber aburrido.
Alter Ebro
para nada has aburrido, es mas, bastante interesante.
ya me funciona con el .js aparte (y)
gracias tio, eres un pozo de sabiduria. :)
meddle
me alegro que te chute, y de pozo... nada, me falta MUCHO por aprender, en serio. Lo que te he contado lo he aprendido a base de errores, como todos ;)