elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  javascript document.write falla
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: javascript document.write falla  (Leído 6,901 veces)
RoxyHana

Desconectado Desconectado

Mensajes: 10


Ver Perfil
javascript document.write falla
« en: 31 Julio 2013, 12:29 pm »

Hola! Resulta que tengo el siguiente código:

Código:
<div id="usercountpost">
<span id="valor"></span></div>

<script type="text/javascript">
window.onload = function (){
var mens=parseInt(document.getElementById('valor').innerText);
var expe=parseInt(mens*1.6);
var nivel=parseInt(expe/2);
}
</script>
<img src="http://i226.photobucket.com/albums/dd257/RoxyHana/Lyslan_Foro/Iconos/5_zpse406282e.png"/> <script type="text/javascript">document.write(nivel);</script><br/>
<img src="http://i226.photobucket.com/albums/dd257/RoxyHana/Lyslan_Foro/Iconos/4_zpsaaad303d.png"/> <script type="text/javascript">document.write(expe);</script><br/>

El valor del span se rellena gracias a otro script. El caso es que document.write(nivel); y document.write(expe); no me muestran los valores pero si dentro del script pongo alert(nivel); o alert(expe);, si que me muestra lo que necesito!

Por otra parte necesito convertir esto en un bucle ya que tengo varios <span> con la misma id y necesito que haga lo mismo con todas...

¿Alguna idea? Muchas gracias por adelantado!


« Última modificación: 31 Julio 2013, 20:08 pm por RoxyHana » En línea

EFEX


Desconectado Desconectado

Mensajes: 1.171


"Dinero Facil"


Ver Perfil WWW
Re: javascript document.write falla
« Respuesta #1 en: 31 Julio 2013, 21:00 pm »

Declara expe, nivel como variables globales y en vez de utilizar innerText probá con innerHTML.
Para generar el bucle necesitas cambiar el nombre del id, no pueden tener el mismo nombre, algo como..

Código
  1. <span id="valor-1"></span>
  2. <span id="valor-2"></span>
  3. ...
  4.  

Pero eso ya tendras que ver tu script en como lo podes generar. Con una sentencia for obtenes cada valor, haces la operacion y podes generar un nuevo elemento(div) con cada resultado.


En línea

RoxyHana

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: javascript document.write falla
« Respuesta #2 en: 31 Julio 2013, 21:21 pm »

No funciona como global tampoco, a lo mejor lo estoy haciendo mal porque acabo de empezar hace poco a estudiar javascript, me resulta más extraño que java...
He probado innerHTML tambien y no funciona...lo extraño me sigue pareciendo que en el alert si funciona, me muestra todo correcto.

El código así tal cual me devuelve expe=1 y nivel=2 en los campos, y en el alert me lo muestra bien, con lo calculado en el script pero si oculto el alert, se me quedan los campos tambien vacíos...las globales dejan de mostrarse.

Código:
                               <div id="usercountpost">
<span id="valor"></span></div>

<script type="text/javascript">
var expe=1;
var nivel=2;
window.onload = function (){
var mens=parseInt(document.getElementById('valor').innerText);
expe=parseInt(mens*1.6);
nivel=parseInt(expe/2);
alert('Mensajes: '+mens+' Exp: '+expe+' Nivel: '+nivel);
}
</script>
<img src="http://i226.photobucket.com/albums/dd257/RoxyHana/Lyslan_Foro/Iconos/5_zpse406282e.png"/> <script type="text/javascript">document.write(nivel);</script><br/>
<img src="http://i226.photobucket.com/albums/dd257/RoxyHana/Lyslan_Foro/Iconos/4_zpsaaad303d.png"/> <script type="text/javascript">document.write(expe);</script><br/>
« Última modificación: 31 Julio 2013, 21:41 pm por RoxyHana » En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: javascript document.write falla
« Respuesta #3 en: 31 Julio 2013, 22:05 pm »

Segun he entendido, lo que te pasa es que no cambian las valores en el document.write pero si cambian en el alert.

Eso te pasa por una sencilla razón:

window.onload = function(), espera a que todo el documento este cargado antes de ejecutarse, mientras que los document.write que pones con las imágenes se ejecutan nada mas se carguen, por tanto, todavía no tienen los valores que se definen dentro de la función.

Yo lo que haría seria esto:
Código
  1. <div id="usercountpost">
  2. <span id="valor">5</span></div>
  3. <script type="text/javascript">
  4. var expe=1;
  5. var nivel=2;
  6. window.onload = function (){
  7.   var mens=parseInt(document.getElementById('valor').innerText);
  8.   expe=parseInt(mens*1.6);
  9.   nivel=parseInt(expe/2);
  10.  
  11.   document.getElementById('cantidad_nivel').innerHTML = nivel;
  12.   document.getElementById('cantidad_exp').innerHTML = expe;
  13.   alert('Mensajes: '+mens+' Exp: '+expe+' Nivel: '+nivel);
  14. }
  15. </script>
  16. <img src="http://i226.photobucket.com/albums/dd257/RoxyHana/Lyslan_Foro/Iconos/5_zpse406282e.png"/>
  17. <span id="cantidad_nivel"></span><br/>
  18.  
  19.  
  20.  
  21. <img src="http://i226.photobucket.com/albums/dd257/RoxyHana/Lyslan_Foro/Iconos/4_zpsaaad303d.png"/>
  22. <span id="cantidad_exp"></span><br/>




Citar
Por otra parte necesito convertir esto en un bucle ya que tengo varios <span> con la misma id y necesito que haga lo mismo con todas...

HTML esta diseñado SOLO y ÚNICAMENTE para un ID por elemento. Varios ID te arruinan =). Utiliza class y el método getElementsByClassName().

Saludos
« Última modificación: 31 Julio 2013, 22:13 pm por drvy | BSM » En línea

EFEX


Desconectado Desconectado

Mensajes: 1.171


"Dinero Facil"


Ver Perfil WWW
Re: javascript document.write falla
« Respuesta #4 en: 31 Julio 2013, 22:08 pm »

Si, el maldito onload  ;D, tambien podes crear una funcion y llamarlo...

Código
  1. var expe;
  2. var nivel;
  3. function MostrarNivelExp(){
  4.    var mens=parseInt(document.getElementById('valor').innerHTML);
  5.    expe=parseInt(mens*1.6);
  6.    nivel=parseInt(expe/2);
  7. }
  8.  
  9. MostrarNivelExp();
  10.  
En línea

1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: javascript document.write falla
« Respuesta #5 en: 31 Julio 2013, 22:09 pm »

window.onload = function(), espera a que todo el documento este cargado antes de ejecutarse, mientras que los document.write que pones con las imágenes se ejecutan nada mas se carguen, por tanto, todavía no tienen los valores que se definen dentro de la función.

Pero lo más raro es que dice que con una variable si le mostró el resultado xD
En línea

abc
RoxyHana

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: javascript document.write falla
« Respuesta #6 en: 31 Julio 2013, 22:11 pm »

Funciona! pero es curioso porque si borro el alert, deja de funcionar, es decir, se quedan los campos vacíos...yo puse el alert solo para comprobar los valores no necesito que me salga. ¿Por qué pasa eso?
En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: javascript document.write falla
« Respuesta #7 en: 31 Julio 2013, 22:15 pm »

Seguro que no borras nada mas que el alert ? Por que si funciona quitandolo ·_·

Saludos
En línea

1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: javascript document.write falla
« Respuesta #8 en: 31 Julio 2013, 22:22 pm »

Funciona! pero es curioso porque si borro el alert, deja de funcionar, es decir, se quedan los campos vacíos...yo puse el alert solo para comprobar los valores no necesito que me salga. ¿Por qué pasa eso?


Jajaja algo similar me pasó hace tiempo y la solución que le di fue utilizar jquery  :silbar: para mostrar una imagen de cargando.
Pero el problema es el mismo que comenta  drvy | BSM (como se pronuncia? xD)

Edito.
Aunque revisando bien... no tendría porque pasar en este caso D:

Algo debes tener mal.
« Última modificación: 31 Julio 2013, 22:24 pm por Darhius » En línea

abc
RoxyHana

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: javascript document.write falla
« Respuesta #9 en: 31 Julio 2013, 22:27 pm »

Vale, era porque lo ponía en comentario pero al borrarlo si que funciona, mas o menos...me da otros problemas pero intentaré arregarlo por mi cuenta. Si veo que no hay manera volveré por aqui!

Muchas gracias por la ayuda, me sirvió bastante!
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines