Sto utilizzando un JS (vedi sotto) per organizzare una serie di schede divise in tab. Per attivare la visualizzazione del tab richiesto, molto semplicemente la stringa richiesta è:
Codice PHP:
<a href="#tab1">
laddove, ovviamente, c'è una numerazione progressiva, in base al tab desiderato.
Il problema sorge dal fatto che, nella pagina, utilizzo anche il JS smoothscroll, che sposta la pagina agli ancoraggi in modo fluido. L'accoppiata tra i due mi produce, dato il segno # che precede il nome del tab, uno scroll della pagina al limite superiore del div #tab1 (o 2, o 3...). Per di più, poiché la pagina contiene molte schede, ciascuna delle quali presenta i suoi tab, tutti numerati da 1 in su, qualunque tab richiamo, anche dall'ultima scheda in fondo alla pagina, mi riporta in testa, al primo div tab!
C'è modo di risolvere???
Questo è il JS per i tab:
Codice PHP:
function Yetii(obj,active){
this.active = (active) ? active : 1,
this.timeout = null,
this.tabclass = 'tab',
this.activeclass = 'active',
this.getTabs = function(){
var retnode = [];
var elem = document.getElementById(obj).childNodes; //modified for IE 5.x support
for (var i = 0; i < elem.length; i++) {
if (elem[i].className==this.tabclass) retnode[retnode.length]=elem[i];
}
return retnode;
},
this.links = document.getElementById(obj+'-nav').getElementsByTagName('a'),
this.tabs = this.getTabs();
this.show = function(number){
for (var i = 0; i < this.tabs.length; i++) {
this.tabs[i].style.display = ((i+1)==number) ? 'block' : 'none';
this.links[i].className = ((i+1)==number) ? this.activeclass : '';
}
},
this.rotate = function(interval){
this.show(this.active);
this.active++;
if(this.active > this.tabs.length) this.active = 1;
var self = this;
this.timeout = setTimeout(function(){self.rotate(interval);}, interval*1000);
},
this.init = function(interval){
this.show(this.active);
var self = this;
for (var i = 0; i < this.links.length; i++) {
this.links[i].customindex = i+1;
this.links[i].onclick = function(){ if (self.timeout) clearTimeout(self.timeout); self.show(this.customindex); return false; };
}
if (interval) this.rotate(interval);
}; };