

下記のコードは、誕生日が来たらメッセージが表示され、誕生日が過ぎたら次の誕生日まで  
デジタル時計が表示されるように設定されています。  
これを、誕生日が来たら１分ごとにメッセージをa)とb)に切り替えるようにするには、  
どうすればいいでしょうか。  
偶数の分(〇%2==０)と奇数の分(〇%２==０+1)をうまく入れられません。

a) 偶数の分のメッセージ: 金さん銀さん 〇歳の誕生日おめでとう！！！！！  
b) 奇数の分のメッセージ: 後で、プレゼントを送ります☆

[code]

    <!DOCTYPE html>
    <html lang="ja">
    <head>
    <meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">
    <meta http-equiv="Content-Script-Type" content="text/javascript">
    <meta http-equiv="Content-Style-Type" content="text/css">
    <title></title>
    
    
    <style type="text/css">
    
    /* Circle Text Styles */
    #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;}
    /* End Required */
    /* End Circle Text Styles */
    </style>
    
    <script type="text/javascript">
    <!--
    
    ;(function(){
    
    var birthday = new Date(1917, 3, 8);
    var isBirthDay = false;
    
    if((new Date().getMonth() == birthday.getMonth()) && (new Date().getDate() == birthday.getDate())) {
        var age = new Date().getYear()- birthday.getYear();
        var msg="金さん銀さん"+" "+age+"歳"+"の誕生日"+" "+"おめでとう！！！！！";
        isBirthDay = true;
    
    } else {
      var ti = new Date;
    
         var Hour = ti.getHours();
         var Min = ti.getMinutes();
         var Sec = ti.getSeconds();
    
            if(Hour <= 9) { 
                           Hour = "\u0020\u0020" + Hour; 
    }        
    　　　　if(Min <= 9) { 
                           Min = "0" + Min; 
    }
            if(Sec <= 9) { 
                           Sec =  "0" +  Sec; 
    }
    
    var msg = Hour + ":" + Min + ":" + Sec ;
    }
    
    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';
     };
    },
    
    drag = function(){ // makes the resistance
    
    var birthday = new Date(1917, 3, 8);
    var isBirthDay = false;
    
    if((new Date().getMonth() == birthday.getMonth()) && (new Date().getDate() == birthday.getDate())) {
        var age = new Date().getYear()- birthday.getYear();
        var msg="金さん銀さん"+" "+age+"歳"+"の誕生日"+" "+"おめでとう！！！！！";
        isBirthDay = true;
    
    } else {
    
      var ti = new Date;
    
         var Hour = ti.getHours();
         var Min = ti.getMinutes();
         var Sec = ti.getSeconds();
    
            if(Hour <= 9) { 
                           Hour = "\u0020\u0020" + Hour; 
    }        
    　　　　if(Min <= 9) { 
                           Min = "0" + Min; 
    }
            if(Sec <= 9) { 
                           Sec =  "0" +  Sec; 
    }
    
    var msg = Hour + ":" + Min + ":" + Sec ;
    }
    
    msg = msg.split('');
    var n = msg.length - 1;
    for (var d, i = n; i > -1; --i)
    {
        var elm = document.getElementById('iemsg' + i);
        elm.innerHTML = msg[i];
    };
    
     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();
    },
    
    init = function(){ // appends message divs, & sets initial values for positioning arrays
     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);
    },
    
    ascroll = function(){
     ymouse += window.pageYOffset;
     xmouse += window.pageXOffset;
     window.removeEventListener('scroll', ascroll, false);
    };
    
    o.id = 'myText'; o.style.fontSize = size + 'px';
    
    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]

追記)以下のコードできちんと分離されるはずですが、elseの表示(奇数の分の場合)のとき、  
ifの表示と合併されて表示されます。理由が分かる方は、教えていただけませんか。

[code]

    ～中略～
    var birthday = new Date(1917, 3, 8);
    var isBirthDay = false;
    
    if((new Date().getMonth() == birthday.getMonth()) && (new Date().getDate() == birthday.getDate())){
    
    var date = new Date;
    var minutes = date.getMinutes();
     var   isBirthDay = true;
    
      if(minutes%2==0){
    
        var age = new Date().getYear()- birthday.getYear();
        var msg="金さん銀さん"+" "+age+"歳"+"の誕生日"+" "+"おめでとう！！！！！"+" ";
    
    } else {
    
      var ti = new Date;
    
         var Hour = ti.getHours();
         var Min = ti.getMinutes();
         var Sec = ti.getSeconds();
    
            if(Hour <= 9) { 
                           Hour = "\u0020\u0020" + Hour; 
    }        
    　　　　if(Min <= 9) { 
                           Min = "0" + Min; 
    }
            if(Sec <= 9) { 
                           Sec =  "0" +  Sec; 
    }
    
    var msg = Hour + ":" + Min + ":" + Sec ;
    
    }
    }
    ～中略～
    
[/code]


CC BY-SA 3.0
2017-04-07T15:56:26.990
33847
2017-04-08T13:54:48.333
2017-04-08T10:27:28.913
20431
20431
question
javascript
誕生日が来たら、1分ごとにメッセージを切り替える記述の仕方


いずれのIFも既に質問者様内のコードにて使用されているので、回答のポイントがずれているかもしれませんが。

[code]

    var date = dt.getDate();
    var minutes = dt.getMinutes();
    
[/code]

で分が取得できますので  
minutes%2==0で判定すればよいかと思います。

ページアクセス時の初期メッセージを切り替えるということではなく、  
ユーザーがページに1分以上とどまった際にメッセージを切り替えるということであれば

[code]

    var handler = function(){
        //メッセージ切り替え処理
    } 
    setInterval(handler, 60000);
    
[/code]

で定期実行されます。

* * *

殴り書きコードですが、下記で試したらば動作いたしました。  
「きちんと機能しませんでした」とは具体的にどういう症状になっているのでしょうか？  
各ブラウザには検証ツールがついておりますので、Consoleのエラーログ等でご教示頂けると皆さん回答しやすいかと思います。

[code]

    <script type="text/javascript">
      changeMsg = function () {
        var date = new Date;
        var minutes = date.getMinutes();
        var elm = document.getElementById("text");
        if(minutes%2==0){
    
    //前処理省略のため一旦除外          var age = new Date().getYear()- birthday.getYear();
              var age = "dummy"
          var msg="金さん銀さん"+" "+age+"歳"+"の誕生日"+" "+"おめでとう！！！！！"+" ";
    
        } else {
    
          var ti = new Date;
          var Hour = ti.getHours();
          var Min = ti.getMinutes();
          var Sec = ti.getSeconds();
    
          if(Hour <= 9) { 
            Hour = "\u0020\u0020" + Hour; 
          }
          if(Min <= 9) { 
            Min = "0" + Min; 
          }
          if(Sec <= 9) { 
                             Sec =  "0" +  Sec; 
          }
          var msg = Hour + ":" + Min + ":" + Sec ;
    
        }
        elm.firstChild.nodeValue =msg
        setInterval(changeMsg,1000);
      }
      window.onload = changeMsg;
    
    </script>
    <body>
        <p id="text">test</p>
    </body>
    
[/code]


CC BY-SA 3.0
2017-04-08T07:14:30.317
33861
2017-04-08T13:54:48.333
2017-04-08T13:54:48.333
19716
19716
33847
answer