2017-10-11 79 views
0

我是新來的,請耐心等待。 我有參數的簡單功能,我使用jQuery:Javascript以不同參數多次調用相同功能

function AnimateValues(a, b, c, d){ 
    return $(a).stop().animate({b : c}, d); 
} 

現在,我想調用它需要的,例如當:

AnimateValues('#div1', 'opacity', 1, 500); 
AnimateValues('#div2', 'opacity', 0, 500); 
AnimateValues('#div3', 'top', 20, 500); 
... 

但似乎只有最後一個是執行。 幫助將不勝感激。

+0

您是否正在循環調用函數,或者如上所示實際連續三次調用函數 – Mobius

+0

您可以發佈您調用函數的HTML代碼嗎? –

+4

'只有最後一個被執行'沒有意義,因爲你的代碼不應該像你期望的那樣工作,因爲'{b:c}'不會使用參數'b'的值作爲鍵爲對象,但名稱爲'b'本身。所以它永遠不會動畫'top'或'opactiy'。 –

回答

0

你需要在[]中包裝b參數,否則它只是字符串鍵。

function AnimateValues(a, b, c, d){ 
 
    return $(a).stop().animate({[b] : c}, d); 
 
} 
 

 
AnimateValues('#div1', 'opacity', 1, 500); 
 
AnimateValues('#div2', 'opacity', 0, 500); 
 
AnimateValues('#div3', 'top', 20, 500);
div { 
 
    position: relative; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="div1">Div1</div> 
 
<div id="div2">Div2</div> 
 
<div id="div3">Div3</div>

+0

它的工作原理,thx的幫助。 +1爲你,但我是未成年人,我不能投票:) – pitinca

+0

不客氣。 –

+0

另一次,請使用通過在JavaScript中使用金徽章授予的dup-to *關閉*重複問題,而不是提供答案給他們。 – Makyen

0

這是不是一個真正的回答你的問題,因爲,only the last one is executed沒有意義。

因爲{b : c}不會使用參數b的值作爲對象的鍵值,而是使用名稱b本身,所以您的代碼不適用於您所期望的任何方式。因此,它永遠不會動畫topopactiy

如果你可以使用ES6功能,那麼你可以寫[b]代替b這將使用值OB b關鍵。

function AnimateValues(a, b, c, d){ 
    return $(a).stop().animate({[b] : c}, d); 
} 

或者

function AnimateValues(a, b, c, d){ 
    var params = {}; 
    params[b] = c; 
    return $(a).stop().animate(params, d); 
} 

但正如我所說,這不能解釋你的only the last one is executed