我试图制作一个简单的模拟时钟,当我尝试编程钟表时,它们不会移动。 我只用CSS标记了秒针进行测试,但它没有用。
这是代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
body{
margin:0;
padding:0;
background-color:#E9E9E9;
height:100%;
width:100%;
overflow:hidden;
text-align:center;
position:absolute;
}
#clock {
margin:0 auto;
top:100px;
width:600px;
height:600px;
background-color:white;
box-shadow:0px 0px 10px #A4A4A4;
border-radius:300px;
text-align:center;
}
#sec{
position:relative;
width:300px;
height:10px;
top:300px;
left:300px;
background-color:black;
transform-origin:top left;
}
</style>
</head>
<body>
<div id="clock">
<div id="hour"></div>
<div id="min"></div>
<div id="sec"></div>
</div>
<script>
window.addEventListener('load',(function init(){clock();}));
function clock(){
var d, hour, min, sec;
d = new Date;
hour = d.getHours();
min = d.getMinutes();
sec = d.getSeconds();
setAttr('min',min*6);
setAttr('sec',sec*6);
setInterval(clock, 1000);
}
function setAttr(id,val){
var a = 'rotate(' + val + 'deg)';
document.getElementById(id).style.transform = a;
}
function setAttr(id,val){
var a = 'rotate(' + val + 'deg)';
document.getElementById(id).style.transform = a;
}
</script>
</body>
</html>
如果有人可以帮助我,我会发布小提琴。 https://jsfiddle.net/ubm06q32/
答案 0 :(得分:1)
它是一个错误的日期
function clock(){
var date, hour, min, sec;
date = new Date;
hour = date.getHours();
min = date.getMinutes();
sec = date.getSeconds();
setAttr('min',min*6);
setAttr('sec',sec*6);
setTimeout(clock, 1000);
}
答案 1 :(得分:1)
有一些事情妨碍了这项工作。
首先,您的代码永远不会执行。您已将事件附加到窗口的load
事件,但该事件只能附加一个事件。你设置jsFiddle的方式,jsFiddle加载事件处理程序正在破坏(覆盖)它,所以它永远不会被调用。如果您将jsFiddle选项更改为No wrap - in <head>
,它将解决该问题。
更好的解决方案仍然是使用安全,可移植的解决方案,如jQuery,它可以处理管理多个页面加载脚本所涉及的复杂性。
一旦处理完毕,您的代码就会出现拼写错误:使用d
代替date
(一旦代码实际运行,您就会看到控制台)。
修正了jsFiddle:https://jsfiddle.net/kjs7esbs/1/
答案 2 :(得分:0)
我在你的小提琴中注意到的一些事情:
更新的代码:
function clock(){
var date, hour, min, sec;
date = new Date;
hour = date.getHours();
min = date.getMinutes();
sec = date.getSeconds();
setAttr('min',min*6);
setAttr('sec',sec*6);
setInterval(clock, 1000);
}
更新了小提琴:
答案 3 :(得分:0)
万一你需要,这是模拟时钟的工作版本:
var date, hourPos, minPos, secPos;
function clock(){
date = new Date;
secPos = date.getSeconds() * (360 / 60);
minPos = date.getMinutes() * (360 / 60) + secPos / 60;
hourPos = date.getHours() % 12 * (360 / 12) + minPos / 60 + secPos / 3600;
setAttr('hour', hourPos - 90);
setAttr('min', minPos - 90);
setAttr('sec', secPos - 90);
}
function setAttr(id,val){
var a = 'rotate(' + val + 'deg)';
document.getElementById(id).style.transform = a;
}
setInterval(clock, 1000 / 60);
&#13;
body{
margin:0;
padding:0;
background-color:#E9E9E9;
height:100%;
width:100%;
overflow:hidden;
text-align:center;
position:absolute;
}
#clock {
margin:0 auto;
top:100px;
width:600px;
height:600px;
background-color:white;
box-shadow:0px 0px 10px #A4A4A4;
border-radius:300px;
text-align:center;
}
#sec{
position:relative;
width:250px;
height:3px;
top:300px;
left:300px;
background-color:black;
transform-origin:top left;
}
#hour{
position:relative;
width:150px;
height:3px;
top:300px;
left:300px;
background-color:yellow;
transform-origin:top left;
}
#min{
position:relative;
width:230px;
height:3px;
top:300px;
left:300px;
background-color:blue;
transform-origin:top left;
}
#sec{
position:relative;
width:280px;
height:3px;
top:300px;
left:300px;
background-color:black;
transform-origin:top left;
}
&#13;
<div id="clock">
<div id="hour"></div>
<div id="min"></div>
<div id="sec"></div>
</div>
&#13;
jsFiddle:https://jsfiddle.net/ubm06q32/18/