Javascript class changing, colspan, firefox
I am having some issues with firefox, that work fine in IE (go figure)
The issue is, I have a table with 4 tds on the the title bar (one blank) and three (one displayed at a time) tr's with 1 td and a colspan=4.
It displays fine at pageload, but when I dynamically change the display from none to block, it resets the colspan to 1 (atleast it displays that way).
again, this works fine in IE6+, just not firefox.
thanks in advance.
Code:
<script>
function swapInbox(boxx){
switch(boxx){
case "1":
document.getElementById('trOldMail').style.display = "none";
document.getElementById('tdOldMailHeader').className = "mailNotSelected";
document.getElementById('trSavedMail').style.display = "none";
document.getElementById('tdSavedMailHeader').className = "mailNotSelected";
document.getElementById('trNewMail').style.display = "block";
document.getElementById('tdNewMailHeader').className = "mailSelected";
break;
case "2":
document.getElementById('trOldMail').style.display = "block";
document.getElementById('tdOldMailHeader').className = "mailSelected";
document.getElementById('trSavedMail').style.display = "none";
document.getElementById('tdSavedMailHeader').className = "mailNotSelected";
document.getElementById('trNewMail').style.display = "none";
document.getElementById('tdNewMailHeader').className = "mailNotSelected";
break;
case "3":
document.getElementById('trOldMail').style.display = "none";
document.getElementById('tdOldMailHeader').className = "mailNotSelected";
document.getElementById('trSavedMail').style.display = "block";
document.getElementById('tdSavedMailHeader').className = "mailSelected";
document.getElementById('trNewMail').style.display = "none";
document.getElementById('tdNewMailHeader').className = "mailNotSelected";
break;
}
return true;
}
</script>
<table style="width:550px;" cellspacing="0" cellpadding="5"><tr>
<td class="mailSelected" id="tdNewMailHeader" onclick="return swapInbox('1');">New Mail</td>
<td class="mailNotSelected" id="tdOldMailHeader" onclick="return swapInbox('2');">Old Mail</td>
<td class="mailNotSelected" id="tdSavedMailHeader" onclick="return swapInbox('3');">Saved Mail</td>
<td class="mailFiller"></td>
</tr>
<tr id="trNewMail" class="trShowMessages">
<td id="tdMailNew" class="mailDisplay" colspan="4">ewewew</td>
</tr>
<tr id="trOldMail" style="display:none;" class="trShowMessages">
<td id="tdMailOld" class="mailDisplay" colspan="4">sdsdsds</td>
</tr>
<tr id="trSavedMail" style="display:none;" class="trShowMessages">
<td id="tdMailSaved" class="mailDisplay" colspan="4">gfgfgf</td>
</tr>
</table>
here is the css, incase it has an impact:
Code:
/***********************
MAIL BOX
***********************/
.mailSelected{
width:100px;
max-width:100px;
background-color:#0099CC;
color:#FFFFFF;
text-align:center;
cursor:pointer;
font-weight:bold;
}
.mailNotSelected{
width:100px;
max-width:100px;
background-color:#DDDDDD;
color:#000000;
text-align:center;
cursor:pointer;
}
.mailFiller{
background-color:#DDDDDD;
width:250px;
}
.mailDisplay{
border:1px solid;
border-color:#0099CC;
padding:10px;
width:550px;
}
.mailMessage{
border:1px solid;
border-color:#0099CC;
padding:10px;
}
.trShowMessages{
width:550px;
}
Use "display:table-row" instead of "display:block"
Code:
<script>
function swapInbox(boxx){
switch(boxx){
case "1":
document.getElementById('trOldMail').style.display = "none";
document.getElementById('tdOldMailHeader').className = "mailNotSelected";
document.getElementById('trSavedMail').style.display = "none";
document.getElementById('tdSavedMailHeader').className = "mailNotSelected";
document.getElementById('trNewMail').style.display = "table-row";
document.getElementById('tdNewMailHeader').className = "mailSelected";
break;
case "2":
document.getElementById('trOldMail').style.display = "table-row";
document.getElementById('tdOldMailHeader').className = "mailSelected";
document.getElementById('trSavedMail').style.display = "none";
document.getElementById('tdSavedMailHeader').className = "mailNotSelected";
document.getElementById('trNewMail').style.display = "none";
document.getElementById('tdNewMailHeader').className = "mailNotSelected";
break;
case "3":
document.getElementById('trOldMail').style.display = "none";
document.getElementById('tdOldMailHeader').className = "mailNotSelected";
document.getElementById('trSavedMail').style.display = "table-row";
document.getElementById('tdSavedMailHeader').className = "mailSelected";
document.getElementById('trNewMail').style.display = "none";
document.getElementById('tdNewMailHeader').className = "mailNotSelected";
break;
}
return true;
}
</script>
thank you, that made it work in FF, but broke IE
this works in both:
Code:
<script>
function swapInbox(boxx){
switch(boxx){
case "1":
document.getElementById('trOldMail').style.display = "none";
document.getElementById('tdOldMailHeader').className = "mailNotSelected";
document.getElementById('trSavedMail').style.display = "none";
document.getElementById('tdSavedMailHeader').className = "mailNotSelected";
document.getElementById('trNewMail').style.display = "";
document.getElementById('tdNewMailHeader').className = "mailSelected";
break;
case "2":
document.getElementById('trOldMail').style.display = "";
document.getElementById('tdOldMailHeader').className = "mailSelected";
document.getElementById('trSavedMail').style.display = "none";
document.getElementById('tdSavedMailHeader').className = "mailNotSelected";
document.getElementById('trNewMail').style.display = "none";
document.getElementById('tdNewMailHeader').className = "mailNotSelected";
break;
case "3":
document.getElementById('trOldMail').style.display = "none";
document.getElementById('tdOldMailHeader').className = "mailNotSelected";
document.getElementById('trSavedMail').style.display = "";
document.getElementById('tdSavedMailHeader').className = "mailSelected";
document.getElementById('trNewMail').style.display = "none";
document.getElementById('tdNewMailHeader').className = "mailNotSelected";
break;
}
return true;
}
</script>
Not sure if Safari or Chrome supports too.
Anyway here is one another working version too.
Code:
<script>
function getInternetExplorerVersion()
// Returns the version of Internet Explorer or a -1
// (indicating the use of another browser).
{
var rv = -1; // Return value assumes failure.
if (navigator.appName == 'Microsoft Internet Explorer')
{
var ua = navigator.userAgent;
var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
if (re.exec(ua) != null)
rv = parseFloat( RegExp.$1 );
}
return rv;
}
function swapInbox(boxx){
var display = ((getInternetExplorerVersion()>=5)&&(getInternetExplorerVersion()<8))?"block":"table-row";
switch(boxx){
case "1":
document.getElementById('trOldMail').style.display = "none";
document.getElementById('tdOldMailHeader').className = "mailNotSelected";
document.getElementById('trSavedMail').style.display = "none";
document.getElementById('tdSavedMailHeader').className = "mailNotSelected";
document.getElementById('trNewMail').style.display = display;
document.getElementById('tdNewMailHeader').className = "mailSelected";
break;
case "2":
document.getElementById('trOldMail').style.display = display;
document.getElementById('tdOldMailHeader').className = "mailSelected";
document.getElementById('trSavedMail').style.display = "none";
document.getElementById('tdSavedMailHeader').className = "mailNotSelected";
document.getElementById('trNewMail').style.display = "none";
document.getElementById('tdNewMailHeader').className = "mailNotSelected";
break;
case "3":
document.getElementById('trOldMail').style.display = "none";
document.getElementById('tdOldMailHeader').className = "mailNotSelected";
document.getElementById('trSavedMail').style.display = display;
document.getElementById('tdSavedMailHeader').className = "mailSelected";
document.getElementById('trNewMail').style.display = "none";
document.getElementById('tdNewMailHeader').className = "mailNotSelected";
break;
}
return true;
}
</script>
Thread Information
Users Browsing this Thread
There are currently 1 users browsing this thread. (0 members and 1 guests)
Posting Permissions
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
Forum Rules
Bookmarks