проблема с петлей -JS - PullRequest
0 голосов
/ 14 мая 2011

У меня есть много фрагментов кода, таких как:

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

Я пробовал этот цикл, но я не уверен насчет сценария.Вероятно, у меня есть синтаксические ошибки.

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

спасибо

Ответы [ 2 ]

0 голосов
/ 14 мая 2011

для динамического создания имени переменной необходимо использовать скобочные обозначения

Например: this['$m'+x] или window['$m'+x] создаст переменную с именем $m1, где x = 1

попробовать:

window['foo' + 'bar'] = 'hello';
alert(foobar);
0 голосов
/ 14 мая 2011

По виду $m+x Я предполагаю, что вы пытаетесь создать переменную динамически, например, от $m0 до $m9 на основе итерации от 0 до 10. Вы не можете сделать это в Javascript как Насколько я знаю, это даст вам ошибку. Я предлагаю вместо создания динамических переменных что-то вроде, почему бы не заполнить значения внутри массива на основе индексов x.

Вот что-то:

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]

Так что в основном $m будет массивом с массивами. Я не знаю, верно ли мое предположение, но я надеюсь, что оно дает представление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...