デジタル時計は動いていないのに、更新される奇妙な現象
下記のコードは、1分おきに"和暦"と"西暦"に切り替わる『(カレンダー機能付き)デジタル時計』で、
マウスポインターにくっついて来るものです。
しかし、問題があるのです。
デジタル時計は、一分ごとに更新されるのに秒針が動いていないのです。
このデジタル時計を動いている状態にするには、どうすればいいでしょうか。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta http-equiv="Content-Style-Type" content="text/css">
<title>文字マウスストーカー</title>
<style type="text/css">
#myText {
font-style: italic;
font-weight: bold;
font-family: 'comic sans ms', verdana, arial;
color: gold;
position: absolute;top: 0;left: 0;z-index: 3000;cursor: default;}
#myText div {position: relative;}
#myText div div {position: absolute;top: 0;left: 0;text-align: center;}
</style>
<script type="text/javascript">
<!--
/* Circling text trail- Tim Tilton
Website: http://www.tempermedia.com/
Visit: http://www.dynamicdrive.com/ for Original Source and tons of scripts
Modified Here for more flexibility and modern browser support
Modifications as first seen in http://www.dynamicdrive.com/forums/
username:jscheuer1 - This notice must remain for legal use
*/
;(function(){
var msg = "";
var size = 24;
var circleY = 0.75; var circleX = 2;
var letter_spacing = 5;
var diameter = 10;
var rotation = 0.4;
var speed = 0.3;
if (!window.addEventListener && !window.attachEvent || !document.createElement) return;
msg = msg.split('');
var n = msg.length - 1, a = Math.round(size * diameter * 0.208333), currStep = 20,
ymouse = a * circleY + 20, xmouse = a * circleX + 20, y = [], x = [], Y = [], X = [],
o = document.createElement('div'), oi = document.createElement('div'),
b = document.compatMode && document.compatMode != "BackCompat"? document.documentElement : document.body,
mouse = function(e){
e = e || window.event;
ymouse = !isNaN(e.pageY)? e.pageY : e.clientY; // y-position
xmouse = !isNaN(e.pageX)? e.pageX : e.clientX; // x-position
},
makecircle = function(){ // rotation/positioning
if(init.nopy){
o.style.top = (b || document.body).scrollTop + 'px';
o.style.left = (b || document.body).scrollLeft + 'px';
};
currStep -= rotation;
for (var d, i = n; i > -1; --i){ // makes the circle
d = document.getElementById('iemsg' + i).style;
d.top = Math.round(y[i] + a * Math.sin((currStep + i) / letter_spacing) * circleY - 15) + 'px';
d.left = Math.round(x[i] + a * Math.cos((currStep + i) / letter_spacing) * circleX) + 'px';
};
}
var tMsg = ' ';
var lastTLocale = '';
function digi(Hour,Min,Sec){
var t = tMsg;
var date = new Date();
var mt = date.getMinutes();
if( mt%2==0 ){
if(lastTLocale!= 'info1'){
var time = new Date(),
m = new Array("1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"),
w = new Array("㊐", "㊊", "㊋", "㊌", "㊍", "㊎", "㊏"),
month = m[time.getMonth()],
day = time.getDate(),
week = w[time.getDay()];
t = "◆" + " " + month + day + "日" + " " + week + " " + "★" + "★" + " " + time.toLocaleDateString("ja-JP-u-ca-japanese", { era: "long", year: "numeric" }).replace(/\u200e/g, "").replace(" ", "").replace(/(^|[^\d])1(?=$|[^\d])/, '$1元') + " " + "◆" + Hour + ":" + Min + ":" + Sec;
lastTLocale = 'info1';
}
}
else{
if(lastTLocale != 'info2'){
var time = new Date(),
w = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
m = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
week = w[time.getDay()],
month = m[time.getMonth()],
day = time.getDate(),
year = time.getYear() + 1900;
if ((day == 1 ) || (day == 21 ) || (day == 31 )) {
day = day + "st";
}
else if ((day == 2 ) || (day == 22 )) {
day = day + "nd";
}
else if ((day == 3 ) || (day == 23 )) {
day = day + "rd";
}
else {
day = day + "th";
}
t = "★" + " " + week + " " + day + " " + month + " " + year + " "+ Hour + ":" + Min + ":" + Sec + "★";
lastTLocale = 'info2';
}
}
var currentLength = msg.length;
if (t != tMsg) {
tMsg=t;
// 状態の変更
msg = t.split('');
n = msg.length - 1;
// 文字要素の変更
for (var i = Math.max(currentLength, msg.length) - 1; i > -1; --i)
{
var d = i < currentLength ? document.getElementById('iemsg' + i) : null;
if (d)
{
if (i < t.length)
{
// 既存要素の内容変更
d.innerHTML = msg[i];
}
else
{
// 不要になった要素の削除
d.parentElement.removeChild(d);
}
}
else
{
// 不足要素の追加
d = document.createElement('div');
d.id = 'iemsg' + i;
d.style.height = d.style.width = a + 'px';
d.appendChild(document.createTextNode(msg[i]));
oi.appendChild(d); y[i] = x[i] = Y[i] = X[i] = 0;
}
}
};
ascroll = function(){
ymouse += window.pageYOffset;
xmouse += window.pageXOffset;
window.removeEventListener('scroll', ascroll, false);
};
o.id = 'myText'; o.style.fontSize = size + 'px';
}
function drag(){
var time = new Date(),
Hour = time.getHours(),
Min = time.getMinutes(),
Sec = time.getSeconds();
if(Min <= 9) {
Min = "0" + Min;
}
if(Sec <= 9) {
Sec = "0" + Sec;
}
y[0] = Y[0] += (ymouse - Y[0]) * speed;
x[0] = X[0] += (xmouse - 20 - X[0]) * speed;
for (var i = n; i > 0; --i){
y[i] = Y[i] += (y[i-1] - Y[i]) * speed;
x[i] = X[i] += (x[i-1] - X[i]) * speed;
};
makecircle();digi(Hour,Min,Sec);
}
function init(){
if(!isNaN(window.pageYOffset)){
ymouse += window.pageYOffset;
xmouse += window.pageXOffset;
} else init.nopy = true;
for (var d, i = n; i > -1; --i){
d = document.createElement('div'); d.id = 'iemsg' + i;
d.style.height = d.style.width = a + 'px';
d.appendChild(document.createTextNode(msg[i]));
oi.appendChild(d); y[i] = x[i] = Y[i] = X[i] = 0;
};
o.appendChild(oi); document.body.appendChild(o);
setInterval(drag, 25);
}
if (window.addEventListener){
window.addEventListener('load', init, false);
document.addEventListener('mouseover', mouse, false);
document.addEventListener('mousemove', mouse, false);
if (/Apple/.test(navigator.vendor))
window.addEventListener('scroll', ascroll, false);
}
else if (window.attachEvent){
window.attachEvent('onload', init);
document.attachEvent('onmousemove', mouse);
}
})();
// -->
</script>
</head>
<body bgcolor="black">
</body>
</html>