awm6392
11-05-2010, 12:08 AM
Hi
I found a tab script on the net a while back, but I forget exactly where. It has worked fine until I recently discovered a problem which I should have caught earlier. The script works fine in Firefox, but in other browsers, clicking on a tab loads the next tabs content, meaning the last tab loads nothing, and in IE7 the tabs don't load at all.
The script I'm using is:
<script type="text/javascript">
<!--
function TabView(id, current){
if(typeof(TabView.cnt) == "undefined"){
TabView.init();
}
current = (typeof(current) == "undefined") ? 0 : current;
this.newTab(id, current);
}
TabView.init = function(){
TabView.cnt = 0;
TabView.arTabView = new Array();
}
TabView.switchTab = function(TabViewIdx, TabIdx){
TabView.arTabView[TabViewIdx].TabView.switchTab(TabIdx);
}
TabView.prototype.newTab = function(id, current){
var TabViewElem, idx = 0, el = '', elTabs = '', elPages = '';
TabViewElem = document.getElementById(id);
TabView.arTabView[TabView.cnt] = TabViewElem;
this.TabElem = TabViewElem;
this.TabElem.TabView = this;
this.tabCnt = 0;
this.arTab = new Array();
// Loop throught the elements till the object with
// classname 'Tabs' is obtained
elTabs = TabViewElem.firstChild;
while(elTabs.className != "Tabs" )elTabs = elTabs.nextSibling;
el = elTabs.firstChild;
do{
if(el.tagName == "A"){
el.href = "javascript:TabView.switchTab(" + TabView.cnt + "," + idx + ");";
this.arTab[idx] = new Array(el, 0);
this.tabCnt = idx++;
}
}while (el = el.nextSibling);
// Loop throught the elements till the object with
// classname 'Pages' is obtained
elPages = TabViewElem.firstChild;
while (elPages.className != "Pages")elPages = elPages.nextSibling;
el = elPages.firstChild;
idx = 0;
do{
if(el.className == "Page"){
this.arTab[idx][1] = el;
idx++;
}
}while (el = el.nextSibling);
this.switchTab(current);
// Update TabView Count
TabView.cnt++;
}
TabView.prototype.switchTab = function(TabIdx){
var Tab;
if(this.TabIdx == TabIdx)return false;
for(idx in this.arTab){
Tab = this.arTab[idx];
if(idx == TabIdx){
Tab[0].className = "ActiveTab";
Tab[1].style.display = "block";
Tab[0].blur();
}else{
Tab[0].className = "InactiveTab";
Tab[1].style.display = "none";
}
}
this.TabIdx = TabIdx;
}
function init(){
t1 = new TabView('TabView1', 0);
t2 = new TabView('TabView2', 1);
}
//-->
</script>
<script type="text/javascript">
<!--
if (document.images)
{
pic1= new Image(676,139);
pic1.src="<?php print $base_path . $directory; ?>/files/images/school_banner.jpg";
pic2= new Image(676,139);
pic2.src="<?php print $base_path . $directory; ?>/files/images/student_banner.jpg";
pic3= new Image(676,139);
pic3.src="<?php print $base_path . $directory; ?>/files/images/parent_banner.jpg";
}
function swapEvents(picName,imgName,textName,textValue)
{
var picture = picName;
var image = imgName;
var text = textName;
var value = textValue;
function swapimage(picSwap,imgSwap)
{
if (document.images)
{
imgOn = eval(imgSwap + ".src");
document[picSwap].src = imgOn;
if (imgSwap == "pic2" || imgSwap == "pic1")
{
document[picSwap].useMap = "#fbMap";
}
else
{
document[picSwap].useMap = "";
}
}
}
swapimage(picture,image);
function swaptext(textSwap,valueSwap)
{
document.getElementById(textSwap).innerHTML = valueSwap;
}
swaptext(text,value);
}
//-->
</script>
followed with this HTML (this is an example, not what i exactly used):
<div class="TabView" id="TabView1">
<!--Tabs-->
<div class="Tabs">
<a id="tab1"> </a>
<a id="tab2"> </a>
<a id="tab3"> </a></div>
<!--Pages-->
<div class="Pages">
<div class="Page" id="page1">
</div>
<div class="Page" id="page2">
</div>
<div class="Page" id="page3">
</div>
</div>
</div>
The page this problem is on is here (http://choicez.com.au/endorsements). Can someone please help? This is quite important.
Cheers
Alex
I found a tab script on the net a while back, but I forget exactly where. It has worked fine until I recently discovered a problem which I should have caught earlier. The script works fine in Firefox, but in other browsers, clicking on a tab loads the next tabs content, meaning the last tab loads nothing, and in IE7 the tabs don't load at all.
The script I'm using is:
<script type="text/javascript">
<!--
function TabView(id, current){
if(typeof(TabView.cnt) == "undefined"){
TabView.init();
}
current = (typeof(current) == "undefined") ? 0 : current;
this.newTab(id, current);
}
TabView.init = function(){
TabView.cnt = 0;
TabView.arTabView = new Array();
}
TabView.switchTab = function(TabViewIdx, TabIdx){
TabView.arTabView[TabViewIdx].TabView.switchTab(TabIdx);
}
TabView.prototype.newTab = function(id, current){
var TabViewElem, idx = 0, el = '', elTabs = '', elPages = '';
TabViewElem = document.getElementById(id);
TabView.arTabView[TabView.cnt] = TabViewElem;
this.TabElem = TabViewElem;
this.TabElem.TabView = this;
this.tabCnt = 0;
this.arTab = new Array();
// Loop throught the elements till the object with
// classname 'Tabs' is obtained
elTabs = TabViewElem.firstChild;
while(elTabs.className != "Tabs" )elTabs = elTabs.nextSibling;
el = elTabs.firstChild;
do{
if(el.tagName == "A"){
el.href = "javascript:TabView.switchTab(" + TabView.cnt + "," + idx + ");";
this.arTab[idx] = new Array(el, 0);
this.tabCnt = idx++;
}
}while (el = el.nextSibling);
// Loop throught the elements till the object with
// classname 'Pages' is obtained
elPages = TabViewElem.firstChild;
while (elPages.className != "Pages")elPages = elPages.nextSibling;
el = elPages.firstChild;
idx = 0;
do{
if(el.className == "Page"){
this.arTab[idx][1] = el;
idx++;
}
}while (el = el.nextSibling);
this.switchTab(current);
// Update TabView Count
TabView.cnt++;
}
TabView.prototype.switchTab = function(TabIdx){
var Tab;
if(this.TabIdx == TabIdx)return false;
for(idx in this.arTab){
Tab = this.arTab[idx];
if(idx == TabIdx){
Tab[0].className = "ActiveTab";
Tab[1].style.display = "block";
Tab[0].blur();
}else{
Tab[0].className = "InactiveTab";
Tab[1].style.display = "none";
}
}
this.TabIdx = TabIdx;
}
function init(){
t1 = new TabView('TabView1', 0);
t2 = new TabView('TabView2', 1);
}
//-->
</script>
<script type="text/javascript">
<!--
if (document.images)
{
pic1= new Image(676,139);
pic1.src="<?php print $base_path . $directory; ?>/files/images/school_banner.jpg";
pic2= new Image(676,139);
pic2.src="<?php print $base_path . $directory; ?>/files/images/student_banner.jpg";
pic3= new Image(676,139);
pic3.src="<?php print $base_path . $directory; ?>/files/images/parent_banner.jpg";
}
function swapEvents(picName,imgName,textName,textValue)
{
var picture = picName;
var image = imgName;
var text = textName;
var value = textValue;
function swapimage(picSwap,imgSwap)
{
if (document.images)
{
imgOn = eval(imgSwap + ".src");
document[picSwap].src = imgOn;
if (imgSwap == "pic2" || imgSwap == "pic1")
{
document[picSwap].useMap = "#fbMap";
}
else
{
document[picSwap].useMap = "";
}
}
}
swapimage(picture,image);
function swaptext(textSwap,valueSwap)
{
document.getElementById(textSwap).innerHTML = valueSwap;
}
swaptext(text,value);
}
//-->
</script>
followed with this HTML (this is an example, not what i exactly used):
<div class="TabView" id="TabView1">
<!--Tabs-->
<div class="Tabs">
<a id="tab1"> </a>
<a id="tab2"> </a>
<a id="tab3"> </a></div>
<!--Pages-->
<div class="Pages">
<div class="Page" id="page1">
</div>
<div class="Page" id="page2">
</div>
<div class="Page" id="page3">
</div>
</div>
</div>
The page this problem is on is here (http://choicez.com.au/endorsements). Can someone please help? This is quite important.
Cheers
Alex