こんにちは動的変数を作成しようとしていますが、変数v0(through〜v5)は定義されていません。javascript - dynamic variables
td.each(function(i){
eval('var v' + i + ' = \'' + $(this).html() + '\';');
});
ご迷惑をおかけして申し訳ございません。
こんにちは動的変数を作成しようとしていますが、変数v0(through〜v5)は定義されていません。javascript - dynamic variables
td.each(function(i){
eval('var v' + i + ' = \'' + $(this).html() + '\';');
});
ご迷惑をおかけして申し訳ございません。
これは悪い考えです。
これを行うことができない理由はありますか?
'i'はゼロベースのインデックスになります。' tdHtml'を '[]として宣言することもできます。 'これはまさに配列が意図された使用であるからです。 –
@David Hedlundええ、私はそれがどのように動作し、開始リテラルを変更するのを忘れました。乾杯。 – alex
Oh my。
グローバルな「動的変数」を作成する場合は、var
を使用しないでください。このコンテキストでは、各関数のローカルな変数が作成されますが、これはまったく役に立たない(そして、ループの外側では未定義になります)。代わりに、次のようにする必要があります。
td.each(function(i){
window['v' + i] = $(this).html();
});
上記のコードの欠点は、グローバル変数もあまり大きくないことです。一方
、例えば、私はこのようにそれを行うだろう、このvaraibleを使用して、ループ内の多くのコードがあるだろう場合は、(ローカル変数をしたい場合:
td.each(function(i){
var dynVars = {};
dynVars['v' + i] = $(this).html();
alert(dynVars.v4); // use the dynamic variables by saying "dynVars.NAME"
});
あなたは組み合わせることができこれらの2つのソリューションは、変数にアクセスできるようにするスコープにdynvars(var dynVars = {}
)の宣言を入れておきます。このコールバックにも表示されている限り、すべて正常に動作します。
なぜですか?これで実現するのは何ですか? –