您好我正在尝试制作动态变量,但是它说`变量v0(到v5)没有定义。
td.each(function(i){
eval('var v' + i + ' = \'' + $(this).html() + '\';' );
});
任何帮助都会非常感激。
答案 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 = {}
)的声明放在您希望能够访问变量的范围内,从而将这两种解决方案结合起来。只要它在每个回调中都可见,一切都会很好。