Ver Mensaje Individual
  #5 (permalink)  
Antiguo 28/07/2015, 11:13
lubtufano
 
Fecha de Ingreso: julio-2011
Mensajes: 220
Antigüedad: 12 años, 9 meses
Puntos: 72
Respuesta: recarga de js

Cita:
Pero a lo que me refiero es que deseo hacer codigo limpio, es decir el codigo js lo tengo en archivos y no mezclado con el html.
No necesitas mezclar código, mira este ejemplo.

escuchadores.html
Código HTML:
Ver original
  1.  
  2.     <title>titulo</title>
  3.     <script type="text/javascript" src="escuchadores.js"></script>
  4. </head>
  5.  
  6.     <input type="button" value="crear nuevo elemento" id="boton1">
  7.     <br>
  8.     <input type="button" value="mostrar alert" class="botonAlert">
  9.     <input type="button" value="mostrar alert" class="botonAlert">
  10.     <p id="parrafo"></p>
  11. </body>
  12.  
  13. </html>

escuchadores.js
Código Javascript:
Ver original
  1. window.addEventListener('load', asignarEscuchadores, false);
  2.  
  3. function asignarEscuchadores() {
  4.     document.getElementById('boton1').addEventListener('click', creaBoton, false);
  5.    
  6.     var botones= document.getElementsByClassName('botonAlert');
  7.     for(i=0; i<botones.length; i++) {
  8.         botones[i].addEventListener('click', verAlert, false);
  9.     }
  10. }
  11.  
  12. function creaBoton() {
  13.     document.getElementById('parrafo').innerHTML= document.getElementById('parrafo').innerHTML + '<input type="button" value="boton nuevo" class="botonAlert">'
  14.    
  15.         //se asigna el manejador a los nuevos elementos
  16.     var inputs= document.getElementById('parrafo').getElementsByTagName('input');
  17.     for(i=0; i<inputs.length; i++) {
  18.         inputs[i].addEventListener('click', verAlert, false);
  19.     }
  20. }
  21.  
  22. function verAlert() {
  23.     alert('Has pinchado un boton');
  24. }

Al tratarse de ajax creo que lo más adecuado es asignar los manejadores de eventos a los nuevos elementos en la misma función que se ejecuta al suceder el evento onreadystatechage.