Почему этот скрипт синхронизации завершается с ошибкой в IE8?

#javascript #jquery #internet-explorer-8 #ie8-compatibility-mode

#javascript #jquery #internet-explorer-8 #ie8-режим совместимости

Вопрос:

http://home.comcast.net /~vonholdt/test/clock/index.htm

когда число с правой стороны, которое показывает секунды, переваливает за 7, все остальные числа переключаются на следующее число в течение 3 секунд (я имею в виду, пока правое второе число не достигнет 0). это происходит только в IE 8.

JS :

 <script type="text/javascript">

  $(document).ready(function(){

    $('#wrap').animate({opacity: 0.0}, 0);

    function middle(){

      wrapTop = ($(window).height() - $('#wrap').height())/2;
      wrapLeft = ($(window).width() - $('#wrap').width())/2;

      $('#wrap').animate({marginTop: wrapTop, marginLeft: wrapLeft}, 500);

    };

      middle();

      $(window).bind('resize', middle);

    function checktime(prevhour,prevmins,prevsecs){

      var now = new Date();

      var hour = now.getHours();
      if(hour < 10) hour = "0"   hour;

      var mins = now.getMinutes();
      if(mins < 10) mins = "0"   mins;

    var secs = now.getSeconds();
    if(secs < 10) secs = "0"   secs;  

      var hour = hour   "";
      var mins = mins   "";
    var secs = secs   "";

      if(prevhour != hour) {

        var prevhour = prevhour   ""
        var hoursplit = hour.split("");
        var prevhoursplit = prevhour.split("");

        if(prevhoursplit[0] != hoursplit[0]) numberflip('#hourl',hoursplit[0]);
        if(prevhoursplit[1] != hoursplit[1]) numberflip('#hourr',hoursplit[1]);

      };

      if(prevmins != mins) {

        var prevmins = prevmins   ""
        var minsplit = mins.split("");
        var prevminsplit = prevmins.split("");

        if(prevminsplit[0] != minsplit[0]) numberflip('#minl',minsplit[0]);
        if(prevminsplit[1] != minsplit[1]) numberflip('#minr',minsplit[1]);

      };

      if(prevsecs != secs) {

        var prevsecs = prevsecs   ""
        var secsplit = secs.split("");
        var prevsecsplit = prevsecs.split("");

        if(prevsecsplit[0] != secsplit[0]) numberflip('#secl',secsplit[0]);
        if(prevsecsplit[1] != secsplit[1]) numberflip('#secr',secsplit[1]);

      };



      function numberflip(which,number){

        if(number != 0) $(which).animate({marginTop: '-' parseInt((number*140),10) 'px'}, 250, 'linear');

        if(number == 0) {

              var getmargin = parseInt(($(which).css('margin-top')), 10);

              $(which).animate({marginTop: parseInt((getmargin-140),10) 'px'}, 250, 'linear', function(){
                $(this).css("margin-top","0px")
          });

            };

      };

      setTimeout(function(){checktime(hour,mins,secs);}, 200);

    };

    checktime(00,00,00);

    $('#wrap').animate({opacity: 1.0}, 1000);

  });



</script>
  

HTML :

 <div id="wrap">
        <img id="hourl" class="time" src="nums2.png" />
        <img id="hourr" class="time" src="nums10.png" />
        <img class="time" src="colon.png" />
        <img id="minl" class="time" src="nums6.png" />
        <img id="minr" class="time" src="nums10.png" />
        <img class="time" src="colon.png" />
        <img id="secl" class="time" src="nums6.png" />
        <img id="secr" class="time" src="nums10.png" />
        <div style="clear:left;"> </div>
        <div id="cover"> </div>
    </div>
  

Комментарии:

1. Живые ссылки являются отличным дополнением к вопросу, но всегда размещайте соответствующий код в вопросе . Две причины. 1. Людям не нужно переходить по ссылке, чтобы помочь вам. 2. StackOverflow предназначен для того, чтобы быть ресурсом не только для вас сейчас, но и для других, у которых возникнет подобная проблема в будущем. Внешние ссылки могут быть перемещены, изменены, удалены и т.д. Убедившись, что в вопросе есть соответствующий код, мы гарантируем, что вопрос (и ответы на него) остаются полезными в течение разумного периода времени.

2. Одна вещь: вам нужно прекратить просто случайное заполнение var ключевого слова перед каждым назначением (и повторным назначением) локальных переменных. Он должен быть там, но только один раз, когда локальная переменная используется в функции в первый раз.

3. @T.J. Crowder: tnx Я новичок. @Pointy : tnx за указание на это, это хорошая практика, но не помогает моей проблеме.

4. Не беспокойтесь. Подробнее о точке зрения Pointy var : blog.niftysnippets.org/2008/03/poor-misunderstood-var.html

5. Я протестировал больше, и, похоже, он специфичен только для IE8, он хорошо работает в IE7 и IE9.