2011-11-13 48 views
0

請看下面的代碼串內登錄:使用Javascript - 加eval函數

for(var j = 0; j <= 12; j++) 
{ 
    deck[j] = eval("card_S" + j + "+1"); 
} 

在EVAL一部分,我需要做的就是添加一個變量j,但這不是工作 - 我猜字符串內的加號與它有關。

那麼我該如何解決這個問題?

謝謝

+3

爲什麼你需要使用'的eval()'?這通常是錯誤代碼的標誌。 – NullUserException

+0

您的預期產出是多少? – Paul

回答

2

你的意思是?

for(var j = 0; j <= 12; j++) 
    deck[j] = eval("card_S" + (j + 1)); 

我建議你再看看你的整體問題,但使用eval幾乎所有的東西通常表明你有一個設計問題的地方。

+0

正是我想要的,謝謝 – user979830

+1

@ user979830:更具體地說,card_S應該是一個數組而不是一堆變量。 – hugomg

0

如何:

deck[j]=eval("card_S"+ (j+1)); 
+0

確切地說,謝謝 – user979830

2

你不需要使用eval的。

for(var j = 0; j <= 12; j++) 
{ 
    deck[j] = window["card_S" + (j + 1)]; 
} 

根本不要使用eval:推理:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/eval#Don%27t_use_eval

+0

它將'String'分配到數組中,但它看起來像OP想要那個變量名引用的實際值;看到我的答案。 – Shad

+0

謝謝。不明白這個問題。編輯。 – pradeek

+0

就在我編輯之前,答案被接受了。 @ user979830你能解釋一下你想要的嗎? – pradeek

0

不要使用eval

。假定變量card_S# s爲在全球範圍內,你可以改變你的代碼:

for(var j = 0; j <= 12; j++) 
    deck[j] = window["card_S" + (j + 1)]; 
+0

card_S#是對象 – user979830