Foros del Web » Programando para Internet » Javascript »

Frase cambiante en el subtítulo

Estas en el tema de Frase cambiante en el subtítulo en el foro de Javascript en Foros del Web. Hola a todos, Lo primero, dar las gracias por adelantado. Ahora viene mi problema, que seguro tiene fácil solución, pero como soy un novato con ...
  #1 (permalink)  
Antiguo 12/03/2015, 05:22
Avatar de Ununhexio  
Fecha de Ingreso: febrero-2015
Ubicación: Zaragoza
Mensajes: 11
Antigüedad: 9 años, 1 mes
Puntos: 0
Frase cambiante en el subtítulo

Hola a todos,

Lo primero, dar las gracias por adelantado. Ahora viene mi problema, que seguro tiene fácil solución, pero como soy un novato con javascript, no entiendo nada, ahí va.

Quiero que el subtítulo de mi web tenga una frase que vaya cambiando cada cierto tiempo, para ello, tengo esta función en un archivo .js externo (no la he programado yo, la he sacado de la red)

Código:
var indice = 0;
		frases = new Array();
		frases[0] = "TEXTO FRASE 0<br>-AUTOR 0"
		
		frases[1] = "TEXTO FRASE 1<br>-AUTOR 1"
		
		frases[2] = "TEXTO FRASE 2<br>-AUTOR 2"
		
		indice = Math.random()*(frases.length);
		indice = Math.floor(indice);
		
		function rotar() {
			if (indice == frases.length) {indice = 0;}
			document.getElementById("rotando").innerHTML = frases[indice];
			indice++;
			setTimeout('rotar();',10000);
Bien, ahora llamo a la función en mi web así:

Código:
<html>
<head>
	<script type="text/javascript" src="pruebafrase.js">
		
	</script>
</head>
<body>
<script language="JavaScript">
 rotar();
</script>
</body>
</html>
Y el resultado es que no me escribe absolutamente nada.

¿Me podrían ayudar, por favor?

Gracias.
  #2 (permalink)  
Antiguo 12/03/2015, 09:16
 
Fecha de Ingreso: enero-2015
Mensajes: 3
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Frase cambiante en el subtítulo

En el html te hace falta la etiqueta con el ID “rotando” que contendrá el título.

El html quedaría así, checa que el cambio fue el h1:

Código HTML:
<html>
<head>
	<script>
		var indice = 0;
		var frases = new Array();

		frases[0] = "TEXTO FRASE 0<br>-AUTOR 0"

		frases[1] = "TEXTO FRASE 1<br>-AUTOR 1"

		frases[2] = "TEXTO FRASE 2<br>-AUTOR 2"

		indice = Math.random()*(frases.length);
		indice = Math.floor(indice);

		function rotar() {
			if (indice == frases.length) {indice = 0;}
			document.getElementById("rotando").innerHTML = frases[indice];
			indice++;
			setTimeout(rotar,10000);
		}
	</script>
</head>
<body>
<h1 id="rotando"></h1>
<script language="JavaScript">
 rotar();
</script>
</body>
</html> 
  #3 (permalink)  
Antiguo 12/03/2015, 11:12
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 244
Antigüedad: 17 años, 9 meses
Puntos: 32
Respuesta: Frase cambiante en el subtítulo

Orientado a objetos: https://jsfiddle.net/hct6q5ce/

Código HTML:
Ver original
  1. <h1 id="rotando"></h1>
  2. var rotor = new Rotor ({
  3.     id: 'rotando',
  4.     interval: 1000,
  5.     frases: [
  6.         "TEXTO FRASE 0<br>-AUTOR 0",
  7.         "TEXTO FRASE 1<br>-AUTOR 1",
  8.         "TEXTO FRASE 2<br>-AUTOR 2"
  9.     ]
  10. });
  11.  
  12. rotor.play();

Código Javascript:
Ver original
  1. function Rotor(options) {
  2.     if (!(this instanceof Rotor)) {
  3.         return new Rotor(options)
  4.     }
  5.    
  6.     this.frases   = options.frases
  7.     this.elem     = document.getElementById(options.id) //|| options.elem
  8.     this.interval = options.interval
  9.     this.indice   = Math.floor(Math.random() * this.frases.length)
  10. }
  11.  
  12. Rotor.prototype.play = function () {
  13.     if (this.indice === this.frases.length) {
  14.         this.indice = 0
  15.     }
  16.     this.elem.innerHTML = this.frases[this.indice]
  17.     console.log(this.indice)
  18.     ++this.indice
  19.     setTimeout(this.play.bind(this), this.interval)
  20. }
__________________
github.com/xgbuils | npm/xgbuils

Etiquetas: cambiante, frase, html, js
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 08:21.