javascript - 动态变量

时间:2010-12-08 07:24:07

标签: javascript jquery variables dynamic

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

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

任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:4)

这听起来不错。

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

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

答案 1 :(得分:4)

哦,我的。

如果要创建全局“动态变量”,则不应使用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 = {})的声明放在您希望能够访问变量的范围内,从而将这两种解决方案结合起来。只要它在每个回调中都可见,一切都会很好。