2011-04-13 135 views
0

我想實現一個Javascript/PHP/AJAX時鐘到我的網站,這樣我可以有一個簡單的時鐘,它在不同的時區工作(教程這裏http://networking.mydesigntool.com/viewtopic.php?tid=373&id=312 javascript函數衝突?

這本身工作正常,但我已經有一個運行在頁面上的JavaScript秒錶,和2似乎衝突和秒錶正在工作時不顯示時鐘。

這是時鐘的腳本:

<script type="text/javascript"> 
function loadTime() 
{ 
http_request = false; 
if(window.XMLHttpRequest) 
{ 
    // Mozilla, Safari,... 
    http_request = new XMLHttpRequest(); 
    if(http_request.overrideMimeType) 
    { 
     // set type accordingly to anticipated content type 
     //http_request.overrideMimeType('text/xml'); 
     http_request.overrideMimeType('text/html'); 
    } 
} 
else if(window.ActiveXObject) 
{ // IE 
    try 
    { 
     http_request = new ActiveXObject("Msxml2.XMLHTTP"); 
    } 
    catch (e) 
    { 
     try 
     { 
      http_request = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     catch(e) 
     { 
     } 
    } 
    } 

    var parameters = "time="; 
    http_request.onreadystatechange = alertContents; 
    http_request.open('POST', 'time.php', true); 
    http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    http_request.setRequestHeader("Content-length", parameters.length); 
    http_request.setRequestHeader("Connection", "close"); 
    http_request.send(parameters); 
} 


function alertContents() 
{ 
    if (http_request.readyState == 4) 
    { 
     if (http_request.status == 200) 
     { 
      result = http_request.responseText; 
      document.getElementById('clock').innerHTML = result; 
     } 
    } 
} 

</script> 
<body onload="setInterval('loadTime()', 200);"> 

,這是秒錶代碼:

<script type="text/javascript"> 
    window.onload = function() 
    { 
     stopwatch('Start'); 
    } 

    var sec = 0; 
    var min = 0; 
    var hour = 0; 
    function stopwatch(text) { 
     sec++; 
     if (sec == 60) { 
      sec = 0; 
      min = min + 1; 
     } else { 
      min = min; 
     } 
     if (min == 60) { 
      min = 0; 
      hour += 1; 
     } 

     if (sec<=9) { sec = "0" + sec; } 
     document.clock.stwa.value = ((hour<=9) ? "0"+hour : hour) + " : " + ((min<=9) ? "0" + min : min) + " : " + sec; 

     if (text == "Start") { document.clock.theButton.value = "Stop "; } 
     if (text == "Stop ") { document.clock.theButton.value = "Start"; } 

     if (document.clock.theButton.value == "Start") { 
      window.clearTimeout(SD); 
      return true; 
     } 
     SD=window.setTimeout("stopwatch();", 1000); 
    } 

    function resetIt() { 
     sec = -1; 
     min = 0; 
     hour = 0; 
     if (document.clock.theButton.value == "Stop ") { 
      document.clock.theButton.value = "Start"; 
     } 
     window.clearTimeout(SD); 
    } 
</script> 

有人能幫助我讓他們的工作並排側好嗎?

感謝所有幫助

回答

1

其一,your're宣佈在HTML中onload事件處理程序:

<body onload="setInterval('loadTime()', 200);"> 

這是在腳本從而覆蓋:

window.onload = function() 
{ 
    stopwatch('Start'); 
} 

這意味着原來onload通話從未執行過。

您應該嘗試使用addEventListener,以便您可以向同一事件添加多個事件處理程序。

一對夫婦更點:

  • 字符串不要傳遞給setIntervalsetTimeout,只是通過函數本身。更高效且更少錯誤傾向:使用jQuery,mootools或gazillion其他框架之一,而不是編寫所有JS代碼以使用不同的瀏覽器,而不是使用不同的瀏覽器。他們使得在所有瀏覽器上正確使用它變得更容易。
+0

嗨馬丁,謝謝你的幫助。不幸的是,我不太瞭解Javascript,只有基礎知識和這些腳本都來自互聯網。我在另一個網站上發佈了相同的問題,並且有人指出了您所做的相同問題,並提供了代碼進行分類,以便現在可以正常工作:)再次感謝! – 2011-04-13 11:46:46

+0

嗨用戶,在這種情況下,我建議從以下幾個很好的JS教程開始 - 它從長遠來看真的付出代價。 Javascript是非常靈活和強大的,但它也使得事情變得非常容易。 – Martijn 2011-04-13 12:02:49

+0

嗨馬丁,會做。我買了一本關於Javascript/Ajax的書,但它所經歷的事情並不真正適用於我在現實世界中使用的東西。你能推薦任何好的教程來開始嗎?謝謝 – 2011-04-13 12:28:03

1

試試這個: 看清細微 '+ =' 而不是 '='!

window.onload += function() 
{ 
    stopwatch('Start'); 
} 
+0

嗨劉易斯感謝您的回覆。我試圖改變你發佈的行,並且還有行,讓id爲firstClock,但不幸的是問題仍然存在。你還有其他建議嗎?謝謝 – 2011-04-13 11:06:59

+0

我意識到你沒有加入onload事件 - 下面的文章中的人指出了! – Lewis 2011-04-13 11:18:39

+0

感謝劉易斯,我已經得到它在Martijn和另一個網站的幫助下排序:) – 2011-04-13 12:28:49