javascript - динамические переменные - PullRequest
1 голос
/ 08 декабря 2010

Привет, я пытаюсь создать динамические переменные, но он говорит, что `переменная v0 (до v5) не определена.

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

любая помощь будет высоко ценится

Ответы [ 2 ]

4 голосов
/ 08 декабря 2010

Oh my.

Если вы хотите создать глобальную "динамическую переменную", вы не должны использовать 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 = {}) в область, в которой вы хотите иметь возможность доступа к вашим переменным. Пока это также видно в этом каждом обратном вызове, все будет работатьв порядке.

4 голосов
/ 08 декабря 2010

Это звучит как плохая идея.

Есть ли причина, по которой вы не можете этого сделать?

var tdHtml = td.map(function() { return $(this).html(); }).get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...