2015-02-11 30 views
3

我爲我的網站創建了一個JavaScript函數,它接受多個參數,然後使用上述參數執行變形。相反,普通的東西,但變形不起作用。看來,通過獲取我想變身的css屬性(即height)作爲變量,我正在竊聽。使用變量的Mootools變體

基本代碼中使用:

window.addEvent('load', function() { 
 
    var box = $('box'); 
 
    var sfx = new Fx.Morph(box, { 
 
     duration: 1000, 
 
     transition: Fx.Transitions.linear 
 
    }); 
 
    
 
    var cssParam = 'height'; 
 
    var endVal = '100'; 
 
    
 
    sfx.start({cssParam endVal}); 
 
    console.log(sfx); 
 
});
#box { 
 
    width:200px; 
 
    height:200px; 
 
    background-color: #FFFFFF; 
 
    border: 1px solid #000000; 
 
}
<div id="box"></div>

的變形走的是可變cssParam從字面上看,並試圖變身cssParam到100很顯然,我這樣做不對,我該怎麼辦解決這個問題?

回答

3

這不是ES6/7 - 你不能在JavaScript對象文本使用動態對象的成員,只是還沒有。

這個:sfx.start({cssParam endVal});是錯誤的。

重寫:

var morphObject = {}; 
morphObject[cssParam] = endVal; 
sfx.start(morphObject); 

在ES6,你將有:

var obj = { 
    ['foo' + Date.now()]: 42, 
    [cssParam]: endVal 
}; 
在現代瀏覽器

,上述將被罰款

(在FF和Chrome最新作品)