Foros del Web » Programando para Internet » Javascript »

Letras que aparecen una tras otra erro

Estas en el tema de Letras que aparecen una tras otra erro en el foro de Javascript en Foros del Web. Hola tengo el siguiente codigo : @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original var texto = 'Hola mundo' ; var i = 0 ;   ...
  #1 (permalink)  
Antiguo 27/08/2012, 05:25
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 3 meses
Puntos: 29
Pregunta Letras que aparecen una tras otra erro

Hola tengo el siguiente codigo :

Código Javascript:
Ver original
  1. var texto = 'Hola mundo';
  2. var i = 0;
  3.     var elintervalo = setInterval(function() {
  4.         if(i<texto.length) {
  5.             document.getElementById('contenido').innerHTML = texto.substr(0,i+1);  
  6.         } else {
  7.             clearInterval(elintervalo);
  8.         }
  9.         i ++;
  10.        
  11.     },30);

Esto me escribe en una div con innerHTML un texto pero con un efecto como este :

1: H
2: Ho
3: Hol....

Pero en el codigo tiene un error que es que cuando el muestro del texto esta en curso y doy click en otro button que escribe otra cosa en el div tambien con innerHTML el texto del otro boton aparece para 1 segundo y luego desaparece y se continua con el muestro del texto del intervalo...

Alguien sabe como solucionar lo ??

Gracias :)
  #2 (permalink)  
Antiguo 27/08/2012, 07:32
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Letras que aparecen una tras otra erro

mas que un error es un problema de lógica. el código está bien.

cuando pulsa ese otro botón, se muestra la cadena. pero después el código que nos muestras lo sobrescribe en lugar de concatenarlo
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #3 (permalink)  
Antiguo 27/08/2012, 09:01
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 3 meses
Puntos: 29
Respuesta: Letras que aparecen una tras otra erro

Cita:
Iniciado por IsaBelM Ver Mensaje
mas que un error es un problema de lógica. el código está bien.

cuando pulsa ese otro botón, se muestra la cadena. pero después el código que nos muestras lo sobrescribe en lugar de concatenarlo
Gracias por tu respuesta pero esto ya lo sabia. Lo que no se es como solucionar lo..
Un saludo
  #4 (permalink)  
Antiguo 27/08/2012, 14:38
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Letras que aparecen una tras otra erro

se trata de concatenar y sobrescribir una variable
Cita:
var texto = 'Hola mundo';
var car = texto.split('');
var i = 0;
var agregatexto = '';
var elintervalo = setInterval(function() {
if(i<car.length) {
document.getElementById('contenido').innerHTML += car[i++] + agregatexto;
agregatexto = '';
} else {
clearInterval(elintervalo);
}

},30);

<input type='button' value="añadir" onclick="agregatexto = ' AÑADIDO '" />
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #5 (permalink)  
Antiguo 27/08/2012, 23:52
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 3 meses
Puntos: 29
Respuesta: Letras que aparecen una tras otra erro

Cita:
Iniciado por IsaBelM Ver Mensaje
se trata de concatenar y sobrescribir una variable
Gracias por tu respuesta :)

Probe el codigo pero funciona de igual manera ..
En javascript puse :
Código Javascript:
Ver original
  1. var texto = 'Hola mundoHola mundoHola mundoHola mundoHola mundoHola mundoHola mundoHola mundoHola mundoHola mundoHola mundoHola mundoHola mundoHola mundoHola mundoHola mundoHola mundoHola mundoHola mundoHola mundoHola mundoHola mundoHola mundoHola mundoHola mundoHola mundo';
  2. var car = texto.split('');
  3. var i = 0;
  4. var agregatexto = '';
  5. var elintervalo = setInterval(function() {
  6. if(i<car.length) {
  7. document.getElementById('contenido').innerHTML += car[i++] + agregatexto;
  8. agregatexto = '';
  9. } else {
  10. clearInterval(elintervalo);
  11. }
  12.  
  13. },30);
  14. }
  15. function cosa() {
  16.     document.getElementById('contenido').innerHTML = 'algo';
  17.         clearInterval(elintervalo) 
  18. }

Y luego en html :

Código HTML:
Ver original
  1. <body onload="b();">
  2. <div id="contenido"></div>
  3. <input type='button' value="añadir" onclick="cosa();" />
  4. </body>


Pero al dar en el boton anadir el intervalo no para y pasa como en mi codigo..

Lo he subito a una pagina para que veas que pasa :

http://javascriptcsspr.comli.com/s.html

Un saludo :)
  #6 (permalink)  
Antiguo 28/08/2012, 07:48
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Letras que aparecen una tras otra erro

Cita:
Iniciado por patilanz Ver Mensaje
Gracias por tu respuesta :)

Probe el codigo pero funciona de igual manera ..
te equivocas. hay grandes un salto cualitativo entre ambos códigos

el nuevo código que muestras es incluso mas sencillo de editar para lograr lo que pretendes. como te comente en mi primer post, se trata solamente de concatenar
Cita:
document.getElementById('contenido').innerHTML += 'algo';
de la otra parte de código, quita la variable (agregatexto) y la concatenación
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}

Etiquetas: texto_poco_a_poco
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 20:33.