Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Как динамически перебирать группы радиобаттонов? (http://www.flasher.ru/forum/showthread.php?t=180749)

mechman 07.06.2012 19:21

Как динамически перебирать группы радиобаттонов?
 
Всем хорошего дня,
Есть группы радиобаттонов: vopros1, vopros2 и т.д.
Пытаюсь их перебрать в цикле - не выходит.
Код AS1/AS2:

        for(i=1;i<11;i++){
                trace(["vopros"+i].selectedData); // undefined
                rezult += this["vopros"+i].selectedData;
                }
        trace("результат "+rezult); // результат NaN

Вот так работает:
Код AS1/AS2:

trace(vopros1.selectedData); // 5

Уважаемые профессионалы, подскажите как получить доступ к группам динамически?

Aquahawk 07.06.2012 19:27

Код AS1/AS2:

trace(this["vopros"+i].selectedData);


mechman 08.06.2012 03:53

Вложений: 1
Всё равно undefined.
Код AS1/AS2:

trace(this["vopros"+i].selectedData); // undefined


udaaff 08.06.2012 09:49

Код AS1/AS2:

butt.addEventListener("click", this);
 
function click(event:Object):Void
{
        var rezult:Number = 0;
        for (i = 1; i < 11; i++)
        {
                var data:Number = this["vopros" + i].selectedData;
                if (isNaN(data))
                        return;
 
                rezult += data;
        }
 
        trace("результат " + rezult);
}


mechman 08.06.2012 16:33

Спасибо огромное! Заработало.
Но объясните мне, пожалуйста, в чём разница между этим:
Код AS1/AS2:

var myListener:Object = new Object();
butt.addEventListener("click",myListener);
myListener.click = function(evt_obj:Object) {}

и этим:
Код AS1/AS2:

butt.addEventListener("click", this);
function click(event:Object):Void {}

Почему во втором случае код в функции работает, а в первом нет?

udaaff 08.06.2012 16:45

Потому что this ссылается на объект через который вызывается функция. В вашем случае это был мусорный объект myListener. А в нём, естественно, нету радиобаттонов.

Можно было в вашем коде вместо this _root написать. И тоже бы заработало.

mechman 08.06.2012 16:56

Прошу прощения за дотошность, а тогда почему работало это?:
Код AS1/AS2:

trace(vopros1.selectedData); // 5


udaaff 08.06.2012 17:18

Потому что без this :)
Переменная искалась в _root.

mechman 08.06.2012 17:35

Блин!
Спасибо огромное, udaaff!


Часовой пояс GMT +4, время: 20:48.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.