2013-11-15 149 views
0

這裏有一點問題時,Js時鐘不起作用。我的時鐘似乎很好地工作,當它直接放在我的HTML文檔的頭部,但從外部.js文件加載它時失敗。我的.js文件中的許多其他內容都可以工作,但不是這個!任何想法可能是什麼問題?在外部js文件

function startTime() { 
    var today=new Date(), 
     h=today.getHours(), 
     m=today.getMinutes(), 
     s=today.getSeconds(); 

    // add a zero in front of numbers<10 
    m=checkTime(m); 
    s=checkTime(s); 
    document.getElementById('bigtime').innerHTML=h+":"+m+":"+s; 
} 

function checkTime(i) { 
    if (i<10) { 
     i="0" + i; 
    } 
    return i; 
} 

http://jsfiddle.net/Zyydz

小提琴^

感謝:-)

編輯任何幫助:我加載像這樣我的js文件在我jtml:

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

我的jquery文件後

像這樣在我的js文件:

$(document).ready(function() { 

}); 
+0

你是如何加載你的JavaScript文件? –

+0

我編輯了我原來的帖子。感謝您的迴應! – shanling

+0

我把它放在我的html文檔的頭部 – shanling

回答

1

在您的jsFiddle中,您選擇了onLoad選項。 如果您從主體中刪除內聯onload並將startTime();放在JavaScript的底部,它就會起作用。
但是,這只是在jsFiddle上。在「真實世界」的情況下,您需要在加載頁面時將腳本放在主體中或者在事件監聽器的頭部。

jQuery的縮寫,這是$(function() { /* executed after page load */ });

正如你所說,你使用jQuery,here's a solution with the jQuery onload

function startTime() 
{ 
    /* ... */ 
} 
// after the whole page is loaded, execute the previously declared startTime() 
$(function() { 
    startTime(); 
}); 
1

我會在jQuery庫加載和JS文件 http://jsfiddle.net/X5njR/

$(document).ready(function(){ 
startTime(); 
}); 

這使得HTML清潔,並保持所有的JS在做一個地方。

+0

感謝您的迴應!實際上,它已經在我的js文件中的$(document).ready函數中,但它只是使它成爲一個靜態時鐘,直到我刷新:-( – shanling

+0

它在小提琴中工作,您確定您正在使用它同樣的方式?(正文中沒有onload屬性?) –

1

的jsfiddle的onLoad選項包裝你的整個JS在//<![CDATA[ window.onload=function(){}//]]>

這意味着你的startTime功能不直到body火災您onload事件處理程序後確定。

使用No wrap - in <head>選項來解決這個問題。