Web-page: cambio testo ad intervalli

Spesso, in una web-page, può risultare molto utile alternare diverse scritte di testo in determinate aree: lo scopo, aggiungendo i necessari fogli di stile (CSS) può essere quello di ottenere una sorta di bacheca/display con informazioni che cambiano ad intervalli regolari.

La cosa può essere fatta senza troppa fatica utilizzando, lato client, le dovute funzioni javascript. Ovviamente, se le stringhe da alternare sono contenute nel codice (javascript), si va a perdere “materiale informativo”: in sostanza Google indicizzerà il sito in questione senza “valutare” le stringhe di testo aggiunte “by code” (lato client attraverso javascript).

Requisito: tutte le nostre stringhe che si alterneranno nella parte di visualizzazione dovranno, per forza di cose, essere presenti nel markup della pagina.

Qui di seguito espongo la mia soluzione, o meglio, l’inizio della mia soluzione: tempo permettendo spero di poter ampliare il codice riportato sotto fino ad ottenere una sorta di mini-libreria. Obiettivi finali del progetto:

  • realizzare una soluzione “multi standard” che supporti sia pagine statiche (XHTML) che pagine dinamiche (ASP.NET e PHP);
  • ottenere una soluzione flessibile che permetta di definire il testo in un file XML (per le pagine dinamiche);
  • appoggiarsi alla libreria javascript jQuery.

Ecco la mia soluzione allo stato embrionale.

var current = -1
var max;

function timerEvent()
{
var Div = document.getElementById("bacheca");

if(Div != null)
{
var i;
var count;

if(current < 0)
{
for (i = 0, count = 0; i < Div.childNodes.length; ++i)
{
if(Div.childNodes[i].tagName == "DIV")
{
if(count < 1)
{
showDiv(Div.childNodes[i]);
}
else
{
hideDiv(Div.childNodes[i]);
}

++count;
}
}

current = 0;
max = count;
}
else
{
++current;
if(current >= max)
{
current = 0;
}

for (i = 0, count = 0; i < Div.childNodes.length; ++i)
{
if(Div.childNodes[i].tagName == "DIV")
{
if(count == current)
{
showDiv(Div.childNodes[i]);
}
else
{
hideDiv(Div.childNodes[i]);
}

++count;
}
}
}
setTimeout(timerEvent, 5000);
}
}

function showDiv(obj)
{
obj.style.display = "";
}

function hideDiv(obj)
{
obj.style.display = "none";
}
<div id="bacheca" style="height: 140px;">
<div>Text 0</div>
<div>Text 1</div>
<div>Text 2</div>
<div>...</div>
<div>Text n</div>
</div>

La funzione javascript [timerEvent] va collegata all’evento [onLoad] della pagina. Saranno visualizzate alternativamente ed in successione i vari DIV (contenuti nel DIV con id “bacheca”), quindi avremo: “Text 0”, “Text 1”, “Text 2”, …, “Text n”, “Text 0”, … Ovviamente il DIV “contenitore” va impostato ad un’altezza predefinita se si vogliono evitare ridimensionamenti (e riposizionamenti) ad ogni “cambio testo”.

In questo esmpio, il testo viene cambiato ogni 5 secondi (vedere linea 60 di codice javascript).



Share and Enjoy:
  • Facebook
  • Twitter
  • del.icio.us
  • LinkedIn

Last Modified: Thursday, April 9th, 2009 @ 16:48

This entry was posted on Thursday, April 9th, 2009 at 16:05 You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Leave a Reply