Foros del Web » Programando para Internet » Javascript »

Preguntilla!!

Estas en el tema de Preguntilla!! en el foro de Javascript en Foros del Web. Hola chicos!! soy principiante en javascript por eso necesito q me hechen una manitoo >_<.... Miren quiero hacer lo siguiente: Cuento con ciertos datos... algo ...
  #1 (permalink)  
Antiguo 01/12/2012, 23:34
 
Fecha de Ingreso: diciembre-2012
Mensajes: 3
Antigüedad: 11 años, 5 meses
Puntos: 0
Preguntilla!!

Hola chicos!!
soy principiante en javascript por eso necesito q me hechen una manitoo >_<....
Miren quiero hacer lo siguiente:
Cuento con ciertos datos... algo mas o menos asi...:

function ej(){
var edad = {
"ana" : "15",
"maria" : "67",
"juan : "32"
};

Ahora quiero obtener la edad por medio de un input.. si pongo ana que me de su edad (15 años), pero no se como hacerlo. Si alguien me guiara o me dijiera si hay una funcion en especial, seria de mucha ayuda!!!

Gracias!
  #2 (permalink)  
Antiguo 02/12/2012, 00:01
Avatar de chwc  
Fecha de Ingreso: julio-2008
Ubicación: Buenos Aires ! :D
Mensajes: 814
Antigüedad: 15 años, 9 meses
Puntos: 103
Respuesta: Preguntilla!!

Hola!
primero que nada, es algo masomenos asi pero hay cosas que destacar
Código Javascript:
Ver original
  1. function ejemplo(){
  2. var edad = {
  3. ana : 15, // el valor como un numero
  4. "maria" : 67,
  5. juan : 32
  6. };
  7. }

primero que nada, recuerda cerrar la función. ( ya se que es un ejempplo pero okey soy un poco molesto aveces )
segundo, las dobles comillas ( " ) son opcionales para la clave de un Objeto de javascript , no es asi con el Valor, estabas determinando el valor como una cadena, no un numero que es lo que nescesitamos.
ahora vamos al problema
Cita:
Ahora quiero obtener la edad por medio de un input
es facil

Código Javascript:
Ver original
  1. function ejemplo(){
  2. var edad = {
  3. ana : parseInt(document.querySelector('input#ana').value),
  4. "maria" : 67,
  5. juan : 32
  6. };
  7. }
lo que hacemos, es obtener el objeto de ID ana, el cual es un input, sacamos el valor, y lo convertimos a un numero.
despues de eso podes hacer todas las operaciones nescesarias !

un saludo :D y que te valla bien

Última edición por chwc; 02/12/2012 a las 00:01 Razón: me olvide una coma ;p
  #3 (permalink)  
Antiguo 02/12/2012, 13:37
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Respuesta: Preguntilla!!

Creo que me estoy perdiendo de algo ¿Hay más información por fuera del post?.
¿Donde dice que haya que hacer operaciones con valores numéricos? Es lo que comunmente se mal-llama "pseudo array asociativo". Y lo que se entiende es que quiere tipear un nombre, y que le aparezca la edad desde esa "base de datos" var edad.

Que por otro lado, está en todos los tutoriales. Es imposible no saber capturar un elemento de array por su índice o su "nombre".
  #4 (permalink)  
Antiguo 02/12/2012, 15:36
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Preguntilla!!

primero, saca el objeto de la función. después, en la función compara el key de los elementos con el valor introducido en el campo (esto has de hacerlo con un for ... in) y cuando retorne true, imprimes el valor del elemento
Cita:
var edad = {
"ana" : "15",
"maria" : "67",
"juan : "32"
};



function fnc(val) {
for (var i in edad) {
if (i.toLowerCase() == val.toLowerCase())
document.getElementById('anyos').innerHTML = edad[val.toLowerCase()];
}
}


<input type="text" id="txt" name="txt" onkeyup="fnc(this.value)" />
<div id="anyos"></div>
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #5 (permalink)  
Antiguo 02/12/2012, 15:56
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Preguntilla!!

No hace falta el bucle:
Código PHP:
<script type="text/javascript">
var 
edad = {
"ana" "15",
"maria" "67",
"juan" "32"
};



function 
fnc(val) {
    if (
val in edad)//o if(edad.hasOwnProperty(val))
        
document.getElementById('anyos').innerHTML edad[val];
}



</script> 
  #6 (permalink)  
Antiguo 02/12/2012, 18:00
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Respuesta: Preguntilla!!

Menos mal que están ustedes para que maca950 no tenga que mirar un mugroso manual.

Sí, claro, es lo que yo le estaba explicando.
Ya que estoy, dejo otra versión, ¿por qué voy a ser menos?

Código:
<!DOCTYPE html>
<html lang="es-ar">
<head>
<meta charset="utf-8" />
<script type="text/javascript">
var edad = {
"ana" : "15",
"maria" : "67",
"juan" : "32",
"marta" : "105"
};
</script>
</head>
<body>
<input type=text onchange="this.value = edad[this.value]" autocomplete="on" autofocus 
placeholder="Nombre" list="lista" > <input type=button value="Quita foco" >

<datalist id="lista">
<option value="ana">
<option value="juan">
<option value="maria">
<option value="marta">
</datalist>
</body>
</html>
Aproveché a poner algo de HTML5, que funcionará en los navegadores que le den soporte.
Y el botón está nada más que para sacarle el foco al campo de texto, así se ejecuta el cambio de nombre a edad. (Mientras se tipea, no cambia.)



Cita:
Iniciado por IsaBelM
Código:
...
if (i.toLowerCase() == val.toLowerCase())
-------------------↑--↑------------------
document.getElementById('anyos').innerHTML = edad[val.toLowerCase()];
------------------------------------------↑-↑------------------------
...
Veo que te estás perfeccionando en el crimen. Me tomé el atrevimiento de ponerlo entre etiquetas de código, por lo del monospace. Espero que no te moleste.
  #7 (permalink)  
Antiguo 03/12/2012, 07:01
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Preguntilla!!

andrés, la solución que propones es la que iba a postear de inicio. pero a medida que la escribía, recordé que el objeto no tiene el método toLowerCase(). de tal modo que para encontrar el key, éste ha de ser escrito igual que lo escribe el usuario

Cita:
Iniciado por furoya Ver Mensaje
Veo que te estás perfeccionando en el crimen. Me tomé el atrevimiento de ponerlo entre etiquetas de código, por lo del monospace. Espero que no te moleste.
no sé de que hablas. no importa, ya hace tiempo que abandoné la idea de entenderte
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #8 (permalink)  
Antiguo 03/12/2012, 10:47
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Respuesta: Preguntilla!!

Cita:
Iniciado por IsaBelM Ver Mensaje
andrés, la solución que propones es la que iba a postear de inicio. pero a medida que la escribía, recordé que el objeto no tiene el método toLowerCase(). de tal modo que para encontrar el key, éste ha de ser escrito igual que lo escribe el usuario
¿Y?. ¿Cuál es el problema?. ¿Por qué vamos a suponer que no lo escribe igual, si en ningún momento maca950 dijo que lo escribía diferente?. La única duda -que se resuelve mirando un tutorial cualquiera que encontrás en gugl- es cómo llamar a un elemento de array "edad" por su "nombre".

Cuando hagan un planteo mejor, se les responde mejor.


Cita:
Iniciado por IsaBelM Ver Mensaje
no sé de que hablas. no importa, ya hace tiempo que abandoné la idea de entenderte


Lo entendés perfectamente.
Para la gente respetuosa, que nunca se le ocurriría meter código en etiquetas de cita, le explico un poco de dónde viene el asunto.

Resulta que las líneas de código tienen características algo particulares, que no se suelen dar en la prosa comun. Una es la extención de las cadenas de texto, que pueden tener "20" caracteres seguidos, sin espacio ni guión ni signo especial de 'corte'.
Como estas cadenas pueden traer problemas en el cuerpo de un mensaje, los códigos se encierran en bloques preparados para mostrar una barra de desplazamiento en caso de desbordes por textos muy largos, que no se usan en la citas porque no se necesitan. En estos casos, si aparece una palabra muy larga, el foro la corta insertando un espacio; porque igual se entiende y así no va a afectar el formato del mensaje.
Pero un "espacio en cualquier parte" si afecta la ejecución de un código de programa, por eso lo que está entre etiquetas de código no se corta.
En realidad, lo cortamos nosotros al escribirlo, porque sabemos dónde lo hacemos.

Una línea que diga

Cita:
...
var variableLarga=document.getElementsByClassName("nom breDeClaseLargo")[0].style.paddingRight;
...
va a ser dividida dentro de [quote], arruinándose como código.
Pero si la metemos en [code]

Código:
...
var variableLarga=document.getElementsByClassName("nombreDeClaseLargo")[0].style.paddingRight;
...
se mantiene igual.

El "truco", para que funcione en [quote], es adelantarnos a poner los espacios donde ya sabemos que no arruinan el ejemplo; algo como

Cita:
...
var variableLarga = document.getElementsByClassName( "nombreDeClaseLargo" )[0].style.paddingRight;
...
Que, por supuesto, sigue estando eticamente mal, porque hay que usar etiquetas de código para meter un código. Es algo evidente, más que elemental.
El único motivo para empezar a hacerlo es asegurarse de que nadie te recrimine 'con razón' que tu código no funciona porque está entre etiquetas de cita.


Algo que yo voy a seguir haciendo, IsaBelM. Porque parece que nadie más tiene ganas de hacer ese trabajo.


(Lo único bueno de esto para maca950 -que nunca volvió, ofendida porque no le dimos la bienvenida- es que nadie le recriminó lo lamentable del título. Yo lo abrí por eso, y me olvidé )
  #9 (permalink)  
Antiguo 03/12/2012, 15:28
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Preguntilla!!

Cita:
Iniciado por furoya Ver Mensaje
¿Y?. ¿Cuál es el problema?. ¿Por qué vamos a suponer que no lo escribe igual, si en ningún momento maca950 dijo que lo escribía diferente?
como se está tratando con usuarios y pueden escribir
Cita:
ana
ANA
AnA
.....
supuse que sería un inconveniente. que ella decida
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #10 (permalink)  
Antiguo 03/12/2012, 16:19
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Respuesta: Preguntilla!!

Sí, querida, ya sé. Pero estás dando un paso más que no era necesario.
Digo, después podíamos inventar a gusto mil formas de filtrar. Como la que se me ocurrió a mí, usando HTML5. Pero eso va en cada caso. Tampoco es que vamos a inventar nada nuevo.
En realidad, lo de "igualar formatos" en los valores a comparar, ya está visto. No te estoy desmereciendo el aporte para nada (como el desconsiderado de Panino5001 que te tuvo que aclarar la inutilidad inicial de tu acotación ), pero te adelantás demasiado. Y no sé si a los novatos (porque la duda original es muuuy de novato) les sirve si no aprovechamos a ir poco a poco, a medida que van surgiendo esos inconvenientes.

Ojo: inconvenientes que surgen no es lo mismo que información retaceada. Yo esperaba a maca950, y sus comentarios ¿Volverá?


P.D.: ¿Hasta la lista de usuarios la escribís en citas? ¡Al final emprear tiene razón! ¡Me lo hacés a propósito!
  #11 (permalink)  
Antiguo 03/12/2012, 16:31
 
Fecha de Ingreso: diciembre-2012
Mensajes: 3
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Preguntilla!!

wooow chicos muchas gracias!!
Disculpen la demora, pero toy probando cada uno de sus respuestas.

chwc, furoya, IsaBelM, Panino5001, gracias por su ayuda!!.. voy a seguir probando cualquier duda la podre aqui.
---

Si me han saltado unas dudas... IsabelM tienes razon puede ser un inconveniente a la hora de que el usuario escriba mal el nombre, o ocupe mayusculas.. pero que se puede hacer contra eso D:??

furoya me gusto q integraras HTML5, pero tengo una duda.. porque cuando agrego un document.write a la funcion no sirve?, o sea lo que me gustaria seria que la respuesta se dira por el document.write y no por el input...

gracias! :)
  #12 (permalink)  
Antiguo 03/12/2012, 16:40
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 5 meses
Puntos: 317
Respuesta: Preguntilla!!

Cita:
Iniciado por maca950 Ver Mensaje
.. porque cuando agrego un document.write a la funcion no sirve?, o sea lo que me gustaria seria que la respuesta se dira por el document.write y no por el input...
Porque nunca pusiste un ejemplo en código de lo que querés hacer. Y nosotros divagamos a piacere. Si aparece la edad en un input, también se puede escribir en una página nueva con write. O en la misma; creo que hay una forma...

Si tenés un ejemplo breve, simple conciso, en HTML completo y posteado entre etiquetas de código vemos qué se puede hacer, pero estoy seguro de que la lista estaría mejor en una verdadera base de datos, en el server. Y manejar todo desde ahí. (Bah, todo lo que se pueda.)
  #13 (permalink)  
Antiguo 04/12/2012, 16:13
 
Fecha de Ingreso: diciembre-2012
Mensajes: 3
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Preguntilla!!

Hola!, lo que pasa esque necesito ingresar algun nombre en el input (de los q puse) y al apretar "enviar" me entrege la edad.

Código HTML:
<script type="text/javascript">
function laedad(){
var edad = {
"ana" : "15",
"maria" : "67",
"juan" : "32"
}};
</script> 

<body>
<input type="text" />
<input type=button value="Enviar" onClick="laedad()" /> 
De ahi no se como seguir, en donde meter el .value..
De antemano gracias!
  #14 (permalink)  
Antiguo 15/12/2012, 09:16
 
Fecha de Ingreso: febrero-2011
Ubicación: Capital Federal
Mensajes: 45
Antigüedad: 13 años, 2 meses
Puntos: 3
Respuesta: Preguntilla!!

maca950, de verdad creo que debes leer tutoriales acerca de javascript y uso de formularios. Sino tendremos que explicarte todo desde cero. Saludos y suerte!

Etiquetas: funcion, input
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 21:07.