

下記のコードは、1分おきに"和暦"と"西暦"に切り替わる『(カレンダー機能付き)デジタル時計』で、  
マウスポインターにくっついて来るものです。  
しかし、問題があるのです。  
デジタル時計は、一分ごとに更新されるのに秒針が動いていないのです。  
このデジタル時計を動いている状態にするには、どうすればいいでしょうか。

[code]

        <!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("１月", "２月", "３月", "４月", "５月", "６月", "７月", "８月", "９月", "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>
    
[/code]


CC BY-SA 4.0
2018-05-30T11:44:21.413
44415
2018-06-01T14:19:01.090
2018-06-01T14:19:01.090
28531
28531
question
javascript
デジタル時計は動いていないのに、更新される奇妙な現象


和暦を使い回して、デジタル時計を動かすのですから、digi関数内を下記のように書き直して  
解決しました。

[code]

            var tMsg = ' ';
            var lastTLocale = '';
    
            function digi(Hour,Min,Sec){
    
          var t = tMsg;
    
          var t1=Hour + ":" + Min + ":" + Sec ;
    
              var date = new Date();
              var mt = date.getMinutes();
    
               if( mt%2==0 ){
    
                  if(lastTLocale!= 'info1'){
    
                      var time = new Date(),
    
                          m = new Array("１月", "２月", "３月", "４月", "５月", "６月", "７月", "８月", "９月", "10月", "11月", "12月"),
                          w = new Array("㊐", "㊊", "㊋", "㊌", "㊍", "㊎", "㊏"),
    
                         month = m[time.getMonth()],
                         day = time.getDate(),
                         week = w[time.getDay()];
    
               tA =  "◆" + " " +  time.toLocaleDateString("ja-JP-u-ca-japanese", { era: "long", year: "numeric" }).replace(/\u200e/g, "").replace(" ", "").replace(/(^|[^\d])1(?=$|[^\d])/, '$1元') + month + day + "日" + " " + week + " " + "★" + "★" + " " + "◆";
              lastTLocale = 'info1';
        }
               t = tA + " " + t1;
    }
    
            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";
                            }
    
    
                        tB = "★" + " " + week + " " + day + " " + month + " " + year;
                        lastTLocale = 'info2';
               }
                        t=tB+" "+  t1;
            }
    
    ～～～略
    
[/code]


CC BY-SA 4.0
2018-05-31T22:10:09.727
44441
2018-06-01T14:12:57.710
2018-06-01T14:12:57.710
28531
28531
44415
answer