Foros del Web » Programando para Internet » Javascript »

problemilla muy básico con el DOM

Estas en el tema de problemilla muy básico con el DOM en el foro de Javascript en Foros del Web. Estoy empezando con javascript y el manejo del DOM Estoy creando como ejemplo una Version del boton me gusta del Facebook leyendo el valor de ...
  #1 (permalink)  
Antiguo 27/01/2014, 18:35
 
Fecha de Ingreso: abril-2009
Mensajes: 58
Antigüedad: 15 años, 1 mes
Puntos: 0
Pregunta problemilla muy básico con el DOM

Estoy empezando con javascript y el manejo del DOM
Estoy creando como ejemplo una Version del boton me gusta del Facebook leyendo el valor de un elemento y sustituyendolo por otro.
El caso es que el script solo me funciona la primera vez que lo ejecuto.

¿me podrían decir que estoy haciendo mal?

muchas gracias

Código Javascript:
Ver original
  1. <!DOCTYPE html>
  2.  
  3. <html>
  4.  
  5. <title>Ejemplo Me Gusta</title>
  6. <meta charset="UTF-8" />
  7.  
  8. <script type="text/javascript">
  9.  
  10. function sumamegusta() {
  11.  
  12. //Leemos el texto del elemento con id=num_megusta
  13. var MegustaAnterior = document.getElementById("num_megusta").firstChild.data;
  14.  
  15. //Sumamos 1 al valor leído
  16. var NuevoMegusta = parseInt(MegustaAnterior) + 1 ;
  17.  
  18. //AJAX: Sumamos 1 nuevo MeGusta a la BBDD
  19.  
  20.  
  21. //Leemos el elemento antiguo que queremos reemplazar
  22. var viejo = document.getElementById("num_megusta");
  23.  
  24. //Accedemos a su elemento padre mediante la propiedad parentNode
  25. var padre = viejo.parentNode
  26.  
  27. //Creamos un nuevo elemento span para reemplazar
  28. var nuevoElemento = document.createElement("span");
  29.  
  30. //Asignamos el id=num_megusta al nuevo elemento
  31. nuevoElemento.id = "num_megusta";
  32.  
  33. //creamos un elemento tipo texto
  34. var nuevoTexto = document.createTextNode(NuevoMegusta);
  35.  
  36. //Asignamos el elemento tipo texto al elemento span
  37. var nuevo = nuevoElemento.appendChild(nuevoTexto);
  38.  
  39. //Reemplazamos con replaceChild, Entre paréntesis pondremos en primer lugar el elemento nuevo que lo sustituira, y en segundo el elemento viejo:
  40. padre.replaceChild(nuevo,viejo)
  41.  
  42.  
  43. }
  44. </script>
  45.  
  46. </head>
  47.  
  48. <body>
  49.  
  50. <div id="megusta">Esta página le gusta a <span id="num_megusta">12</span> Personas</div>
  51. <div id="like"><a id="boton_like" href="#" onclick="sumamegusta();">Me gusta</a></div>
  52.  
  53.  
  54.  
  55. </body>
  56. </html>
  #2 (permalink)  
Antiguo 27/01/2014, 20:22
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: problemilla muy básico con el DOM

Creo que tu función es muy grande para algo que puedes hacerlo así:

Código Javascript:
Ver original
  1. function sumamegusta() {
  2.     var MegustaAnterior = document.getElementById("num_megusta");
  3.     MegustaAnterior.innerHTML = Number(MegustaAnterior.innerHTML) + 1;
  4. }

No hay necesidad de crear un nuevo Span, basta con que tomes el contenido del actual, lo conviertas a formato numérico, le sumes 1 y asignes ese resultado al contenido del Span.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 28/01/2014, 04:28
 
Fecha de Ingreso: abril-2009
Mensajes: 58
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: problemilla muy básico con el DOM

Cita:
Iniciado por Alexis88 Ver Mensaje
Creo que tu función es muy grande para algo que puedes hacerlo así:

Código Javascript:
Ver original
  1. function sumamegusta() {
  2.     var MegustaAnterior = document.getElementById("num_megusta");
  3.     MegustaAnterior.innerHTML = Number(MegustaAnterior.innerHTML) + 1;
  4. }

No hay necesidad de crear un nuevo Span, basta con que tomes el contenido del actual, lo conviertas a formato numérico, le sumes 1 y asignes ese resultado al contenido del Span.

Saludos
Si, ya lo sé, tengo las dos versiones esta, y la del innerHTML
pero quería saber como se hace con el replaceChild
es por aprender.
  #4 (permalink)  
Antiguo 28/01/2014, 08:57
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: problemilla muy básico con el DOM

Estás reemplazando bien el Span, el problema es que, por alguna razón (no la sé), las funciones no afectan a los elementos que reemplazan a elementos antiguos, pero como verás, para este caso no es necesario hacerlo.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: dom
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 00:13.