2011-05-06 54 views
-1

我得到了一個在IE瀏覽器和Chrome瀏覽器中工作的腳本,但不是在FF中。或者它可以在所有三種情況下工作,如果我不能找到'x'被警告的行嗎?腳本僅在alert()未轉義時才起作用?

在FF 3.6股利是第一個可見當劇本是成功的一半..它只是跳轉到「動線」

<div id="tst" style="position:absolute; top:200px; left:200px; height:100px; width:100px; background:#ff0000"></div> 

<script type="text/javascript"> 
    function Tween(){ 
     this.time = 0; 
     this.duration = 800; 
     this.x_start = 0; 
     this.x_end = 0; 

     this.target_func = null; 

     this.method_func = null; 
     this.loop = null; 
     this.interval = 20; 

     this.start = function(){ 
      if(!this.method_func){ 
       this.method_func = this.regularEaseOut; 
      } 

      var _this = this; 
      this.loop = setInterval(function(){ 
       if(_this.set_time() > 0){ 
        var x = _this.method_func(); 
        //alert(x); 
        _this.target_func(x); 
       } 
      }, this.interval); 
     }; 

     this.set_time = function(){ 
      this.time += this.interval; 
      if(this.time > this.duration){ 
       clearInterval(this.loop); 
       this.time = 0; 
      } 

      return this.time; 
     }; 

     this.regularEaseInOut = function(){ 
      var t = this.time; 
      var s = this.x_start; 
      var e = this.x_end; 
      var d = this.duration; 

      if((t/=d/2) < 1){ 
       return c/2*t*t + b; 
      } 
      else{ 
       return -c/2 * ((--t)*(t-2) - 1) + b; 
      } 
     }; 

     this.regularEaseIn = function(){ 
      var t = this.time; 
      var s = this.x_start; 
      var e = this.x_end; 
      var d = this.duration; 

      return c*(t/=d)*t + b; 
     }; 

     this.regularEaseOut = function(){ 
      var t = this.time; 
      var s = this.x_start; 
      var e = this.x_end; 
      var d = this.duration; 

      return -e *(t/=d)*(t-2) + s; 
     }; 
    } 

    var Tween = new Tween(); 
    Tween.x_start = 200; 
    Tween.x_end = 1200; 
    Tween.target_func = function(x){ 
     document.getElementById('tst').style.left = x+'px'; 
    }; 
    Tween.start(); 
</script> 
+0

當它「不起作用」時會發生什麼?有錯誤嗎?還是奇怪的行爲?或者什麼都沒有? – 2011-05-06 06:55:39

+0

該div只在腳本完成時纔可見..它只是跳到「移動線」的中間 – clarkk 2011-05-06 06:57:29

+0

檢查錯誤控制檯是否有任何Javascript錯誤 – 2011-05-06 06:57:53

回答

1

這工作:

<html> 
<head> 
    <script type="text/javascript"> 
     function Tween(){ 
      this.time = 0; 
      this.duration = 800; 
      this.x_start = 0; 
      this.x_end = 0; 

      this.target_func = null; 

      this.method_func = null; 
      this.loop = null; 
      this.interval = 20; 

      this.start = function(){ 
       if(!this.method_func){ 
        this.method_func = this.regularEaseOut; 
       } 

       var _this = this; 
       this.loop = setInterval(function(){ 
        if(_this.set_time() > 0){ 
         var x = _this.method_func(); 
         //alert(x); 
         _this.target_func(x); 
        } 
       }, this.interval); 
      }; 

      this.set_time = function(){ 
       this.time += this.interval; 
       if(this.time > this.duration){ 
        clearInterval(this.loop); 
        this.time = 0; 
       } 

       return this.time; 
      }; 

      this.regularEaseInOut = function(){ 
       var t = this.time; 
       var s = this.x_start; 
       var e = this.x_end; 
       var d = this.duration; 

       if((t/=d/2) < 1){ 
        return c/2*t*t + b; 
       } 
       else{ 
        return -c/2 * ((--t)*(t-2) - 1) + b; 
       } 
      }; 

      this.regularEaseIn = function(){ 
       var t = this.time; 
       var s = this.x_start; 
       var e = this.x_end; 
       var d = this.duration; 

       return c*(t/=d)*t + b; 
      }; 

      this.regularEaseOut = function(){ 
       var t = this.time; 
       var s = this.x_start; 
       var e = this.x_end; 
       var d = this.duration; 

       return -e *(t/=d)*(t-2) + s; 
      }; 
     } 

     function doYourThing() { 
     var tween = new Tween(); 
     tween.x_start = 200; 
     tween.x_end = 1200; 
     tween.target_func = function(x){ 
      document.getElementById('tst').style.left = x+'px'; 
     }; 
     tween.start(); 
     } 
    </script> 
</head> 
<body onload="doYourThing()"> 
    <div id="tst" style="position:absolute; top:200px; left:200px; height:100px; width:100px; background:#ff0000"></div> 
</body> 
</html> 

因此,使用的onload確保該方法只有一次運行文件被加載。此外,您還創建了一個實例變量(Tween),其名稱與要實例化的「類」相同。那肯定會讓你痛苦和痛苦。

0

alert中間停止代碼的執行,直到Ok是按下。檢查這是否是問題的根源。

0

這是什麼意思不起作用?

,如果你的意思是它沒有移動到正確的,它爲我在我的FF 4.0.1

+0

它不能在FF3.6 – clarkk 2011-05-06 07:16:31

+0

詳細信息編輯... – clarkk 2011-05-06 07:16:50

相關問題