2011-01-24 57 views
1

我創建了一個滑出的錯誤消息顯示框,延遲了3秒,然後與Mootools一起滑動。這就是我現在正在做的事情,我該如何糾正它才能使它適合我?顯示一個消息框,滑出,延遲3秒鐘,並使用Mootools滑動?

var slide = new Fx.Slide($("error")); 
slide.slideOut('horizontal').chain(function(){ 
    $("error").set("text", message); 
}).chain(function(){ 
    this.slideIn('horizontal').delay(3000); 
}).chain(function(){ 
    this.slideOut('horizontal'); 
}); 
+0

你能後你的錯誤是具有? – Colum 2011-01-24 17:18:40

回答

0

基本上你的mootools是正確的,但是缺少一些能使你的腳本正常工作的關鍵項目。我已經貼下文一個工作版本,然後提出一些看法:在 3號線

var slide = new Fx.Slide($("error")); 
slide.slideOut('horizontal').chain(function() { 
    $('error').set('text', message); this.callChain(); //NOTE 
}).chain(function() { 
    this.slideIn('horizontal'); 
}).chain(function() { 
    this.slideOut.delay(3000, this, 'horizontal'); //NOTE 
}); 
  1. 通知的this.callChain()。沒有這個是什麼 阻止你看到任何東西。 FX類使用callChain() 方法在內部開始下一個 步驟順序,但如果你 參數鏈()不包含FX的方法 之一,callChain()是 不叫,所以你必須手動執行 。
  2. 您的延遲電話是在錯誤的地方。 Delay()延遲了它所應用函數的執行,它不會在鏈中插入一個暫停。因此,要顯示3秒的錯誤消息,您需要將延遲添加到最後一個函數調用中,因爲這是您想要減速的那個。
  3. 您對延遲的調用不正確。延遲適用於函數,而不是函數的返回值,因此Dimitar的建議如上。請參閱mootools核心文檔中的function以獲取更多信息
  4. 通過它的聲音,您沒有安裝螢火蟲。這可以讓你探索DOM,發現你的代碼改變了頁邊距然後是文本,但是之後沒有任何反應。 Firebug是超級有用的,所以安裝它儘快
  5. 我的解決方案(MooTools的1.3)低於,基本上relfects什麼貝爾巴托夫是在暗示:
$('error').set('slide', { 
     mode: 'horizontal' 
    }).get('slide').slideOut().chain(function() { 
     $('error').set('text', message); this.slideIn(); 
    }, function() { 
     this.slideOut.delay(3000, this); 
    }); 

希望它可以幫助