Hi,
Hallo,
die Lösung ist tatsächlich reichlich unschön: "Element" ist als Bezeichner schon in Gebrauch.
Element war nur ein Beispiel in wirklichkeit heisst die Variable "cESel".
Ändere den Namen Deiner Variable. Dann sieht's doch gut aus.
Nein, da ich bei meiner aktuellen lösung vorgebe, wie das Objekt, aus welchem die Klasse erstellt wird heisst.
hier die komplette Klasse:
var TabManager = function(SelectorName, DontUseHash) {
this.currentTab = "";
this.Tabs = new Array();
this.useHash = (!DontUseHash);
this.TabPrefix = "tab_";
this.ContentPrefix = "";
var TAB_SPACE = document.getElementById(SelectorName);
if (!TAB_SPACE) return false;
var CList = document.getElementsByClassName(SelectorName);
if (CList.length<=0) return false;
for (var ci=0; ci < CList.length; ci++) {
// Infos holen
var cElem = CList[ci];
var cIden = cElem.id;
var cName = cElem.getAttribute("name");
// Tab erstellen
var cESel = document.createElement("div");
cESel.id = this.TabPrefix + cIden;
cESel.className = "nonsel";
cESel.appendChild(document.createTextNode(cName));
cESel.onclick = function() {
TabManager.Select(this.id.slice(TabManager.TabPrefix.length));
}
TAB_SPACE.appendChild(cESel);
// Werte überschreiben
cElem.id = this.ContentPrefix+cIden;
cElem.setAttribute("name", "");
this.Tabs.push(cIden);
}
this.Select = function (newTab) {
if (!this.Tabs) return false;
for (var i = 0; i < this.Tabs.length; i++) {
var Tab = this.Tabs[i];
if (Tab == newTab) {
document.showID(this.ContentPrefix + Tab);
document.setClass(this.TabPrefix + Tab, "sel");
} else {
document.hideID(this.ContentPrefix + Tab);
document.setClass(this.TabPrefix + Tab, "nonsel");
}
}
currentTab = newTab;
if (this.useHash) location.hash = newTab;
}
if (this.useHash && location.hash.length > 1 && this.Tabs.getIndex(location.hash.slice(1))) {
this.Select(location.hash.slice(1));
} else this.Select(this.Tabs[0]);
}
Cheatah
mfg Pryos