External javascript not working in Firefox

Associate
Joined
2 Aug 2005
Posts
680
Hi,

I've added this javascript to my webpage, however it won't display in Firefox. Is there anyway of getting it to work?

This is in the head of the html
Code:
<script src="countdown-clock.js" type="text/javascript"></script>
This is in the external javascript
Code:
function countdown_clock(year, month, day, hour, minute, format)
         {
         html_code = '<span id="countdown"> </span>';
         
         document.write(html_code);
         
         countdown(year, month, day, hour, minute, format);                
         }
         
function countdown(year, month, day, hour, minute, format)
         {
         Today = new Date();
         Todays_Year = Today.getFullYear() - 2000;
         Todays_Month = Today.getMonth() + 1;                  
         
         //Convert both today's date and the target date into miliseconds.                           
         Todays_Date = (new Date(Todays_Year, Todays_Month, Today.getDate(), 
                                 Today.getHours(), Today.getMinutes(), Today.getSeconds())).getTime();                                 
         Target_Date = (new Date(year, month, day, hour, minute, 00)).getTime();                  
         
         //Find their difference, and convert that into seconds.                  
         Time_Left = Math.round((Target_Date - Todays_Date) / 1000);
         
         if(Time_Left < 0)
            Time_Left = 0;
         
         switch(format)
               {
               case 0:
                    //The simplest way to display the time left.
                    document.all.countdown.innerHTML = Time_Left + ' seconds';
                    break;
               case 1:
                    //More datailed.
                    days = Math.floor(Time_Left / (60 * 60 * 24));
                    Time_Left %= (60 * 60 * 24);
                    hours = Math.floor(Time_Left / (60 * 60));
                    Time_Left %= (60 * 60);
                    minutes = Math.floor(Time_Left / 60);
                    Time_Left %= 60;
                    seconds = Time_Left;
                    
                    dps = 's'; hps = 's'; mps = 's'; sps = 's';
                    //ps is short for plural suffix.
                    if(days == 1) dps ='';
                    if(hours == 1) hps ='';
                    if(minutes == 1) mps ='';
                    if(seconds == 1) sps ='';
                    
                    document.all.countdown.innerHTML = days + ' day' + dps + ' ';
                    document.all.countdown.innerHTML += hours + ' hour' + hps + ' ';
                    document.all.countdown.innerHTML += minutes + ' minute' + mps + ' and ';
                    document.all.countdown.innerHTML += seconds + ' second' + sps;
                    break;
               default: 
                    document.all.countdown.innerHTML = Time_Left + ' seconds';
               }
               
         //Recursive call, keeps the clock ticking.
         setTimeout('countdown(' + year + ',' + month + ',' + day + ',' + hour + ',' + minute + ',' + format + ');', 1000);
         }
This is in the body of the html where I want the script to display
Code:
<script type="text/javascript">countdown_clock(07, 07, 1, 00, 00, 1);</script>
Any help would be appreciated :)
 
Associate
OP
Joined
2 Aug 2005
Posts
680
Yeah it's in the root so it should be ok. It works in my IE, but I have tried it on two machines here using Firefox and no joy. Any ideas?
 
Associate
OP
Joined
2 Aug 2005
Posts
680
I guess so, that's the only error in there anyway.

The script link in in the head in between a meta tag and the style sheet link:
Code:
<meta name="description" content="Website details" />

<script src="countdown-clock.js" type="text/javascript"></script>

<link href="../screen.css" media="screen" rel="stylesheet" type="text/css" />
and the script is in a div on the page in the body
Code:
<div id="infobar"><script type="text/javascript">countdown_clock(07, 07, 1, 00, 00, 1);</script>&nbsp;remaining</div>
 
Soldato
Joined
18 Oct 2002
Posts
9,598
Location
Sunderland
Create a new page using the following, does it work?

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title></title>
<script src="countdown-clock.js" type="text/javascript"></script>
</head>
<body>
<script type="text/javascript">countdown_clock(07, 07, 1, 00, 00, 1);</script>
</body>
</html>
 
Soldato
Joined
18 Oct 2002
Posts
9,598
Location
Sunderland
I think it might be the div and extra bits and bobs surrounding the js on your page, try adding them then retrying.

If it fails and you need that div, try changing all occurences of document.all.countdown.innerHTML to document.getElementById('infobar').innerHTML
 
Associate
OP
Joined
2 Aug 2005
Posts
680
Thanks for your help, I'll have a play around with it. I know the site will mainly be used by IE users (it's an internal website) so it's not a problem. I just like to get these things right :)
 
Soldato
Joined
18 Oct 2002
Posts
9,598
Location
Sunderland
Theres no reason for it not to be working in FF, the actual code works it whatever you are doing to it that doesnt! If you get into a scenario like this, revert back to a working copy and add things in piece by piece until it breaks. Then debug (Lots of alerts in JS does the trick plus the FF JS console) to find out what is wrong, then continue.
 
Associate
OP
Joined
2 Aug 2005
Posts
680
I think I have found the error:
Error: document.all has no properties
Source File: countdown-clock.js
Line: 50

and line 50 reads:
document.all.countdown.innerHTML = days + ' day' + dps + ' ';

Strange though because the code you gave me to paste works. Does this shed any light?
 
Associate
OP
Joined
2 Aug 2005
Posts
680
Just changed the bits in the .js file and it's working now, but all other text in the div has gone. The other text is there for the first second, but it then vanishes. The script is also inside another div but that isn't working (only the bit in the id="infobar" is). Is there anyway I can get it working in everything in firefox?

Thanks for your help mate, unfortunately I have no experience of Javascript so I find these problems hard to solve.
 
Associate
OP
Joined
2 Aug 2005
Posts
680
I guess it's some sort of bug in Firefox. What I have I have done now is put the script inside a <span id="countdown"></span> and changed the reference in the Javascript from "infobar" to "countdown" and this seems to work. Either it's a bug in Firefox or IE lets you get away with sloppy code :)

Thanks a lot for all your help, really appreciate it! :)
 
Back
Top Bottom