2012-07-07 72 views
0

我已經50 SVG動畫命名animation0,動畫1,animation2等等,我想加載它們當整數0〜49被傳遞給這個函數:如何傳遞一個整數來創建新的變量名?

function loadAnimation(value){ 
    var whichswiffy = "animation" + value; 
    var stage = new swiffy.Stage(document.getElementById('swiffycontainer'), whichswiffy); 
    stage.start(); 
} 

它不會在目前的工作,也許它通過'whichswiffy'而不是animation10?

任何想法?

+0

將整數轉換爲一個字符串,然後連接它? – imm 2012-07-07 15:04:35

+0

不,值已通過;你可以用'console.log(whichswiffy)'檢查它; – raina77ow 2012-07-07 15:04:54

+1

@imm在JS中沒有必要。字符串+數字=字符串。 – raina77ow 2012-07-07 15:05:21

回答

2

如果你的變量是全球性的,你可以做

var stage = new swiffy.Stage(document.getElementById('swiffycontainer'), window[whichswiffy]); 
+0

哇啊!非常感謝這個作品!雖然我不知道它是什麼意思?如果我可以問什麼是窗戶? – Joe 2012-07-07 15:15:22

+0

@Joe你可以將窗口作爲超級全局變量,你可以通過它訪問任何全局變量。 – xdazz 2012-07-07 15:17:00

+0

很酷謝謝!你知道爲什麼這個工作,其他不工作? – Joe 2012-07-07 15:28:05

5

"I have 50 svg animations named animation0, animation1, animation2 etc."

使用全局變量

我想這意味着你有變量。如果它們是全局變量,則可以將它們作爲全局對象的屬性進行訪問。

var whichswiffy = window["animation" + value]; 

使用對象,而不是變量

但是,如果他們不是全局變量(或者即使他們是),你會更好將它們存儲在一個對象...

var animations = { 
    animation0: your first value, 
    animation1: your second value, 
    /* and so on */ 
} 

...然後訪問它們作爲道具該對象的ERTIES ...

var whichswiffy = animations["animation" + value]; 

使用數組,而不是變量

或者更好,只需使用一個數組,因爲唯一的區別是多少...

var animations = [ 
    your first value, 
    your second value, 
    /* and so on */ 
] 

然後只是使用索引...

var whichswiffy = animations[value]; 
+0

感謝您的回覆!酷我會以這種方式構建我的代碼 - 我從來沒有想到這一點。它會使它更加可管理。歡呼聲:-) – Joe 2012-07-07 15:30:32

+0

@Joe:不客氣。很高興幫助。 – 2012-07-07 15:33:39

相關問題