Autor Tema: [ solucionado ]Problema al asignar funciones y eventos a elementos html en js  (Leído 1536 veces)

Desconectado ceiboart

  • PHPerit@
  • *
  • Mensajes: 20
  • Karma: 0
  • Nuev@ PHPer@
    • Ver Perfil
Hola comunidad. Me presento, soy nuevo :p
Tengo un problema con un javascipt. Para abreviar se los muestro:

Código: [Seleccionar]
window.onload= function(){
    var valores
    var elemento
    for (i=1; i<= 10; i++){
   elemento = document.getElementById(i).onclick = function () {
     valores = elemento.value
     alert("hola " + valores);
   }
  }
}
Se supone que  en el bucle se accede a todos los input button de un formulario (por medio de un atributo id numérico), recorriéndolos uno a uno. A cada elemento input type button se le asigna una función anónima que se ejecutara al hacer clic, mostrando el mensaje “hola “ mas el valor del atributo “value” (un numero), pero al correr el scipt me devuelve “hola undefinet”
¿alguien sabe como puedo hacer para solucionarlo?
Posdata: el script original era de una calculadora que arme para poder entender mejor como asignar eventos y funciones a los elementos html.
Llamando a funciones directamente desde los elementos no tengo problemas, pero se supone que esto es algo que debo evitar. Gracias por su atención
« Última modificación: 13 de Abril de 2012, 20:06:57 pm por ceiboart »

Comunidad PHPeros


Desconectado nmartin021

  • PHPero Avanzado
  • ****
  • Mensajes: 250
  • Karma: 9
    • Ver Perfil
Re:[ Ayuda ]Problema al asignar funciones y eventos a elementos html en javascipt
« Respuesta #1 en: 26 de Marzo de 2012, 08:25:55 am »
Deberías tenerlo así:
Código: [Seleccionar]
window.onload = function(){
for(i=1;i<=10;i++){ // directamente vamos al bucle ya que no necesitamos variables, ahora verás por qué
document.getElementById(i).onclick = function(){ // no hace falta asignar elemento, ya que javascript te asigna automáticamente "this", que se refiere al elemento actual
alert("hola " + this.value); // this -> elemento actual, value -> valor (tu elemento.value, pero con "this")
}
}
}

Fijate en los comentarios y si necesitas ayuda, pregunta ;)

Desconectado ceiboart

  • PHPerit@
  • *
  • Mensajes: 20
  • Karma: 0
  • Nuev@ PHPer@
    • Ver Perfil
Re:[ Ayuda ]Problema al asignar funciones y eventos a elementos html en javascipt
« Respuesta #2 en: 13 de Abril de 2012, 19:19:45 pm »
Deberías tenerlo así:
Código: [Seleccionar]
window.onload = function(){
for(i=1;i<=10;i++){ // directamente vamos al bucle ya que no necesitamos variables, ahora verás por qué
document.getElementById(i).onclick = function(){ // no hace falta asignar elemento, ya que javascript te asigna automáticamente "this", que se refiere al elemento actual
alert("hola " + this.value); // this -> elemento actual, value -> valor (tu elemento.value, pero con "this")
}
}
}

Fijate en los comentarios y si necesitas ayuda, pregunta ;)

 ???

que? lo probaré, pero a primera vista se ve como "mágico"
bueno. supongo que venir de programar en lenguajes de bajo nivel afecta un poco a mi comprensión de javascript.
muchas gracias por tu respuesta
 ;)

Desconectado ceiboart

  • PHPerit@
  • *
  • Mensajes: 20
  • Karma: 0
  • Nuev@ PHPer@
    • Ver Perfil
Re:[ solucionado ]Problema al asignar funciones y eventos a elementos html en js
« Respuesta #3 en: 13 de Abril de 2012, 20:08:13 pm »
nmartin021
si funciona
5 estrellas para ti  :star: :star: :star: :star: :star:
 :D