Supongamos que es necesario declarar una variable de javascript basado en un contador ¿cómo puedo hacerlo?

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

El código anterior no funciona?

Podría usted por favor ayuda?
Gracias!

InformationsquelleAutor user735566 | 2011-05-10

7 Comentarios

  1. 73

    De JavaScript (que yo sepa) hay 2 maneras en que usted puede crear variables dinámicas:

    1. Función eval
    2. objeto de ventana

    eval:

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

    objeto de ventana:

    var pageNumber = 1;
    window["text" + pageNumber] = 123;
    alert(window["text" + pageNumber]);
    • Por ejemplo, Tengo una matriz en la dinámica var window["text" + pageNumber] – cómo obtener la longitud de la matriz?
    • la ventana[«texto» + pageNumber].longitud
    • después de 6 años esta respuesta me salvó la vida ! Gracias !!
  2. 8

    ¿Cómo podría entonces tener acceso a dicha variable ya que no sabes su nombre? 🙂 Usted está probablemente mejor ajuste de un parámetro en un objeto, por ejemplo:

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

    si usted realmente desea hacer esto:

    eval('var text' + pageNumber + '=1');
    • Hay un montón de maneras que usted puede acceder a dicha vars: bucle a través de un conjunto de números donde vars se denominan var1, var2, var3. O la recuperación de un conjunto desconocido, vars y se carga de forma dinámica mediante un bucle de un objeto json y actualización de variables globales, estoy seguro de que hay muchos más escenarios
  3. 6

    No creo que se puede hacer es cantar JavaScript.Creo que se puede utilizar una matriz en lugar de esto,

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

    Suponiendo que la variable está en el ámbito global, se podría hacer algo como esto:

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

    Sin embargo, una mejor pregunta podría ser: ¿por qué quieres ese tipo de comportamientos.

  5. 2

    También podría envolver a su contador en un objeto:

    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. 1

    Se puede hacer uso de this palabra clave en JS:

    Por ejemplo:

    var a = [1,2,3];
    
    for(var i = 0; i < a.length; i++) {
      this["var" + i] = i + 1;
    }

    luego, cuando la impresión:

    var0 //1
    var1 //2
    var2 //3
  7. 0

    Recientemente me necesitaba algo como esto.

    Tengo una lista de variables como esto:

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

    Necesitaba llamar utilizando otra variable que poseía una cadena de caracteres con el nombre de una de estas variables como esto:

    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

    Sólo usar eval para obtener los datos de la variable.

    Acabo de

Dejar respuesta

Please enter your comment!
Please enter your name here