2015-02-11 34 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最新作品)