我正在尝试在我的网站中实现一个 Javascript/PHP/AJAX 时钟,以便我可以拥有一个可以在不同时区运行的简单时钟(教程在这里 http://networking.mydesigntool.com/viewtopic.php?tid=373&id=31 )
这本身工作正常,但我已经在页面上运行了一个 JavaScript 秒表,并且两者似乎发生冲突,并且在秒表工作时时钟不会显示。
这是时钟的脚本:
<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>
有人可以帮我让他们并肩工作吗?
感谢您的帮助
最佳答案
首先,您在 HTML 中声明一个 onload
事件处理程序:
<body onload="setInterval('loadTime()', 200);">
因此在脚本中被覆盖:
window.onload = function()
{
stopwatch('Start');
}
这意味着原始的 onload
调用永远不会执行。
您应该尝试使用addEventListener
因此您可以向同一个事件添加多个事件处理程序。
还有几点:
- 不要将字符串传递给
setInterval
和setTimeout
,只需传递函数本身。更高效且不易出错:setInterval(loadTime, 200);
- 不要编写所有 JS 代码来与不同的浏览器一起工作,而是使用 jQuery、mootools 或无数其他框架之一。它们使在所有浏览器上正确运行变得更加容易。
关于php - 2个javascript函数冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5647849/