2

ループ内で変数を動的に作成する必要がありますが、方法がわかりません。using について読んだことeval();がありますが、変数内の値を動的に変更するだけであることがわかりました。

私はこのようなものが必要です:

$(e).find('unidadeid').each(function () {
    countUnidades++;
    var Unidade[value inside countUnidades here] = $(this).text();
});

あなたのステップについて明確にしてください。私は解決策を求めるのではなく、学びとして助けを求めます。ありがとうございました ;)

4

5 に答える 5

8

次の 2 つのオプションがあります。

  1. 配列を使用します。

    var unidades = [];
    $(e).find('unidadeid').each(function () {
        unidades.push($(this).text());
    });
    

    また

    var unidades = $(e).find('unidadeid').map(function () {
        return $(this).text();
    }).get();
    
  2. 数字だけではない名前が本当に必要な場合は、オブジェクトと括弧付き表記を使用します。

    var unidades = {}, countUnidades = 0;
    $(e).find('unidadeid').each(function () {
        countUnidades++
        unidades['Unidade' + countUnidades] = $(this).text();
    });
    

    これにより、 、 などunidadesのプロパティを持つオブジェクト が作成されます。はインデックスを受け取ることに注意してください。他の目的で必要でない限り、必要ありません。Unidade0Unidade1eachcountUnidades

    var unidades = {};
    $(e).find('unidadeid').each(function (index) {
        unidades['Unidade' + index] = $(this).text();
    });
    
于 2013-04-03T11:52:42.220 に答える
5

いつでも配列を使用できます:

var Unidade = [],
    countUnidades = 0;

$(e).find("unidadeid").each(function(i) {
    Unidade[countUnidades++] = $(this).text();

    // ... or Unidade.push($(this).text());
    // ... or Unidade[i] = $(this).text();
});

DOM 要素には常に一意のIDが必要であることを忘れないでください。そのため、要素の ID を参照するeach場合、ここでは反復は必要ありませんunidadeid

于 2013-04-03T11:49:50.597 に答える
1

完全を期すために、これはまさにあなたが求めていたものです。

$(e).find('unidadeid').each(function () {
  countUnidades++;
  var t = $(this).text();
  eval('Unidade' + countUnidades + ' = t;');
});

ノート:

  • evalセキュリティ ホールを開かずに使用するのは困難です。
  • eval遅い。
  • 変数に動的にアクセスする必要があるため、変数を動的に作成しても意味がありません。
  • 変数はグローバルです (それ以外の場合、それらはコールバック関数に対してローカルであり、作成されるとすぐに消えます)。

通常、代わりに配列を使用します。

var Unidade = [];
$(e).find('unidadeid').each(function () {
  Unidade.push($(this).text());
});
于 2013-04-03T11:59:01.650 に答える
1

変数を動的に作成する必要があるとは思えません。それが役立つことはめったにありません。

おそらく、データ構造について学びたいと思うでしょう。特に、配列が必要だと思います:

var unidades = []; // declare the array outside the loop
$(e).find('unidadeid').each(function () {
    countUnidades++;
    unidades[countUnidades] = $(this).text();
});

これで配列ができました。unidadesその値はtext()要素の内容です。

あなたが望むものかどうかはわかりません.HTML要素ではないfind('unidadeid')すべての要素を見つけることですが、カスタムXMLを処理しているのかもしれませんし、単なる例だったのかもしれません.<unidadeid>

于 2013-04-03T11:52:31.053 に答える