/ / problem with loop -JS - javascript, slučky, dojo, for-loop

problém so slučkou -JS - javascript, slučky, dojo, for-loop

Mám veľa kusov kódu ako:

<script type="text/javascript">
dojo.query("body").delegate("#input0 > select.estatistica", "onchange", function(evt){
dojo.xhrPost({
url: "drop2.php",
handleAs: "json",
postData: "data=" + $(this).val(),
preventCache: true,
load: function(json) {
$m0 = [];

for (var i = 1; i < 10; i++) {
$m0.push(parseFloat(json[i]["valor" + i]));
}
dojo.addOnLoad(refreshChar0);

}
});
});
</script>


<script type="text/javascript">
dojo.query("body").delegate("#input1 > select.estatistica", "onchange", function(evt){
dojo.xhrPost({
url: "drop2.php",
handleAs: "json",
postData: "data=" + $(this).val(),
preventCache: true,
load: function(json) {
$m1 = [];

for (var i = 1; i < 10; i++) {
$m1.push(parseFloat(json[i]["valor" + i]));
}
dojo.addOnLoad(refreshChart1);
}
});
});
</script>

Skúsil som túto slučku, ale nie som si istý scenárom. Pravdepodobne mám chyby syntaxe.

<script type="text/javascript">
for(x=0; x<10; x++) {
dojo.query("body").delegate(""#input"+x+"> select.estatistica"", "onchange", function(evt) {
dojo.xhrPost({
url: "drop2.php",
handleAs: "json",
postData: "data=" + $(this).val(),
preventCache: true,
load: function(json) {
$m+x = [];

for (var i = 1; i < 10; i++) {
$m+x.push(parseFloat(json[i]["valor" + i]));
}
dojo.addOnLoad(refreshChart+x);
}
});
});
}
</script>

Vďaka

odpovede:

0 pre odpoveď č. 1

Ak chcete dynamicky vytvoriť názov premennej, musíte použiť zátvorkový zápis

napríklad: this["$m"+x] alebo window["$m"+x] vytvorí premennú s názvom $m1 kde x = 1

vyskúšajte nasledujúci postup:

window["foo" + "bar"] = "hello";
alert(foobar);

0 pre odpoveď č. 2

Podľa vzhľadu $m+x Hádam, že sa snažíte vytvoriť premennú dynamicky, ako napríklad $m0 na $m9 na základe opakovania od 0 do 10. Nemôžete to urobiť v Javascripte, pokiaľ viem, že vám dá chybu. Navrhujem namiesto vytvorenia dynamickej premennej niečo také, prečo nevyplniť hodnoty vo vnútri poľa na základe indexov x.

Tu je niečo:

var $m = [];
for(x=0; x<10; x++)
{
// some of your codes here ...

// make $m[x] an array
if (typeof $m[x] == "undefined")
$m[x] = [];

// some of your codes here...

for (var i = 1; i < 10; i++)
{
// of course you need to change this to what you need to push
$m[x].push(i);
}

}

console.log($m[0]); // [1, 2, 3, 4, 5, 6, 7, 8, 9]

Takže v podstate $m bude pole s poliami. Neviem, či je môj odhad správny, ale dúfam, že to dá nápad.