嗨我想製作動態變量,但它是說變量v0(通過到v5)沒有定義。javascript - 動態變量
td.each(function(i){
eval('var v' + i + ' = \'' + $(this).html() + '\';');
});
任何幫助將不勝感激。
嗨我想製作動態變量,但它是說變量v0(通過到v5)沒有定義。javascript - 動態變量
td.each(function(i){
eval('var v' + i + ' = \'' + $(this).html() + '\';');
});
任何幫助將不勝感激。
這聽起來像一個壞主意。
是否有任何理由,你不能這樣做呢?
var tdHtml = td.map(function() { return $(this).html(); }).get();
因爲`i`將會是一個從零開始的索引,所以不妨將`tdHtml`聲明爲`[] `,因爲這正是陣列的用途。 – 2010-12-08 07:31:07
哦,我的。
如果你想創建一個全球性的「動態變量」你不應該使用var
。在這種情況下,它創建了一個變量,它是每個函數內部的局部變量,這是非常無用的(並且會導致它在循環外部是不確定的,這正是您正在經歷的)。相反,你應該這樣做:
td.each(function(i){
window['v' + i] = $(this).html();
});
上述代碼的缺點是全局變量也不是很好。
在另一方面,如果你想有一個局部變量(例如,如果有會在使用該varaible循環更多的代碼,然後我會做這樣的:
td.each(function(i){
var dynVars = {};
dynVars['v' + i] = $(this).html();
alert(dynVars.v4); // use the dynamic variables by saying "dynVars.NAME"
});
你可以結合這兩個解決方案將dynvars(var dynVars = {}
)的聲明放在您希望能夠訪問變量的範圍內,只要它在每個回調中都可見,則一切都會正常工作。
爲什麼?這是爲了達到什麼目的? – 2010-12-08 07:26:01