Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Динамический onchange с параметром. (https://javascript.ru/forum/events/21589-dinamicheskijj-onchange-s-parametrom.html)

Metelitca 16.09.2011 12:43

Динамический onchange с параметром.
 
Здравствуйте!

Помогите реализовать. Есть скрипт на странице:

Код:

<script type="text/javascript">
        var idx = 1;
        function createControlString() {

            var newDiv = document.createElement("div");
           
            var newControl = document.createElement("select");
            newControl.setAttribute("id", idx + "_machine");
            newControl.style.width = "65px";
            newControl.style.marginRight = "5px";
            newControl.options.lenght = 7;
            newControl.options[0] = new Option("Pr110", "110");
            newControl.options[1] = new Option("Pr120", "120");
            newControl.options[2] = new Option("Lm210", "210");
            newControl.options[3] = new Option("Sl310", "310");
            newControl.options[4] = new Option("Sl320", "320");
            newControl.options[5] = new Option("Sl330", "330");
            newControl.options[6] = new Option("Sl340", "340");
            newDiv.appendChild(newControl);

            document.getElementById('divWorkArea').appendChild(newDiv);
            document.getElementById(idx + '_machine').onchange = operation;
            idx += 1;
        }

        function operation(element) {
            alert(element.id);
        }
    </script>

Суть скрипта: на форму, по нажатию кнопки, добавляются комбобоксы. К комбобоксу привязано событие onchange, по срабатыванию которого должен отрабатываться скрипт по заполнению другого комбобокса. Проблема в следующем. В функцию с алертом (тестовая) мне нужно передать или контрол, который сгенерировал событие, или (что предпочтительнее) selectedIndex. Но не получается передать параметр. Т.е. если сделать просто функцию с алертом, то все отлично, все отрабатывается. Но как только пытаюсь сделать что-нить вроде document.getElementById(idx + '_machine').onchange = operation(this.selectedIndex); то вся работа скрипта прекращается.

Подскажите, что я делаю не так.

Рон 17.09.2011 01:58

Цитата:

document.getElementById(idx + '_machine').onchange =operation(this.selectedIndex);
А разве можно передавать параметры при присвоении метода событию?
firebug стоит, че пишет?

Sweet 17.09.2011 02:07

Цитата:

Сообщение от Рон
А разве можно передавать параметры при присвоении метода событию?

Нельзя, конечно. Но у функций есть метод .bind:
function foo(argument){
  alert( argument );
};

var bar = foo.bind( window, "test" );
bar();


Часовой пояс GMT +3, время: 18:09.