Подтвердить что ты не робот

Как объявить и использовать динамические переменные в javascript?

Предположим, мне нужно объявить переменную javascript на основе счетчика, как это сделать?

var pageNumber = 1;
var "text"+pageNumber;

Вышеприведенный код не работает?

Не могли бы вы помочь? Спасибо!

4b9b3361

Ответ 1

В JavaScript (как я знаю) есть два способа создания динамических переменных:

  • Функция eval
  • объект окна

Eval:

var pageNumber = 1;
eval("var text" + pageNumber + "=123;");
alert(text1);

оконный объект:

var pageNumber = 1;
window["text" + pageNumber] = 123;
alert(window["text" + pageNumber]);

Ответ 2

Как вы могли бы получить доступ к указанной переменной, так как вы не знаете ее имени?:) Возможно, вам лучше настроить параметр для объекта, например:

var obj = {};
obj['text' + pageNumber] = 1;

если вы - действительно хотите сделать это:

eval('var text' + pageNumber + '=1');

Ответ 3

Я не думаю, что вы можете это спеть JavaScript. Я думаю, вы можете использовать вместо этого массив,

 var textArray=new Array();
    textArray[pageNumber]="something";     

Ответ 4

Предполагая, что переменная находится в глобальной области видимости, вы можете сделать что-то вроде этого:

var x = 1;
var x1 = "test"
console.log(window["x" + x]); //prints "test"

Однако лучшим может быть вопрос, почему вы хотите такое поведение.

Ответ 5

Вы также можете обернуть свой счетчик в объект:

var PageNumber = (function() {
  var value = 0;
  return {
   getVal: function(){return value;},
   incr: function(val){
            value += val || 1;
            this['text'+value]=true /*or some value*/;
            return this;
         }
   };
})();

alert(PageNumber.incr().incr().text2); //=>true
alert(PageNumber['text'+PageNumber.getVal()]) /==> true

Ответ 6

Мне недавно понадобилось что-то вроде этого.

У меня есть список таких переменных:

var a = $('<div class="someHtml"></div>'),b = $('<div class="someHtml"></div>'),c = $('<div class="someHtml"></div>');

Мне нужно было вызвать их, используя другую переменную, содержащую строку с именем одной из этих переменных:

var c = 'a'; // holds the name of the wanted content, but can also be 'b' or 'c'

$('someSelector').html(eval(c)) // this will just use the content of var c defined above

Просто используйте eval для получения переменных данных.

Я просто сделал