javascript – 动态变量

嗨,我正在尝试制作动态变量,但它说`变量v0(到v5)没有定义。

td.each(function(i){ eval('var v' + i + ' = \'' + $(this).html() + '\';' ); }); 

任何帮助将非常感激。

这听起来像个坏主意。

你有什么理由不能这样做吗?

 var tdHtml = td.map(function() { return $(this).html(); }).get(); 

天啊。

如果要创建全局“动态变量”,则不应使用var 。 在这个上下文中,它创建了一个在每个函数内部是局部的变量,这是非常无用的(并且会导致它在循环之外被定义,这正是你所经历的)。 相反,你应该这样做:

 td.each(function(i){ window['v' + i] = $(this).html(); }); 

上面代码的缺点是全局变量也不是很好。

另一方面,如果你想要一个局部变量(例如,如果循环中会有更多使用这个变量的代码,那么我会这样做:

 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 = {} )的声明放在您希望能够访问变量的范围内,从而将这两种解决方案结合起来。 只要它在每个回调中都可见,一切都会好起来的。