Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Работа с динамическими списками (<option>)

45K
22 июля 2009 года
itwork
14 / / 22.07.2009
Всем привет,
Есть 2 функции для работы с динамическими списками

Код:
function dynamicSelect(id1, id2) {
    if (document.getElementById && document.getElementsByTagName) {
        var sel1 = document.getElementById(id1);
        var sel2 = document.getElementById(id2);

        var clone = sel2.cloneNode(true);
        var clonedOptions = clone.getElementsByTagName("option");

        refreshDynamicSelectOptions(sel1, sel2, clonedOptions);
        sel1.onchange = function() {
            refreshDynamicSelectOptions(sel1, sel2, clonedOptions);
        }
    }
}



function refreshDynamicSelectOptions(sel1, sel2, clonedOptions) {
    while (sel2.options.length) {
        sel2.remove(0);
    }
    var pattern1 = /( |^)(select)( |$)/;
    var pattern2 = new RegExp("( |^)(" + sel1.options[sel1.selectedIndex].value + ")( |$)");

    for (var i = 0; i < clonedOptions.length; i++) {
        if (clonedOptions.className.match(pattern1) || clonedOptions.className.match(pattern2)) {
            sel2.appendChild(clonedOptions.cloneNode(true));
        }
    }
}


и вот так присходит вызов для формирования динам. списков, при window.onload
 
Код:
dynamicSelect("Select1", "Select2");
dynamicSelect("Select2", "Select3");



Но ето не то-что мне надо, и вообщем рещил немного переделать одну из них

Код:
function dynamicSelect() { //id1, id2
    var din_spiski = new Array();
    din_spiski[0] = new Array();
    din_spiski[0]["1"] = "Select1";
    din_spiski[0]["2"] = "Select2";
    din_spiski[1] = new Array();
    din_spiski[1]["1"] = "Select2";
    din_spiski[1]["2"] = "Select3";

    for (var i = 0; i < din_spiski.length; i++) {

        id1 = din_spiski["1"];
        id2 = din_spiski["2"];

        if (document.getElementById && document.getElementsByTagName) {
            var sel1 = document.getElementById(id1);
            var sel2 = document.getElementById(id2);

            var clone = sel2.cloneNode(true);
            var clonedOptions = clone.getElementsByTagName("option");
   
            refreshDynamicSelectOptions(sel1, sel2, clonedOptions);
            sel1.onchange = function() {
                refreshDynamicSelectOptions(sel1, sel2, clonedOptions);
            }
        }
    }
}


все это для того чтобы можно было выздать при window.onload вот так
 
Код:
dynamicSelect()

Вся проблемма в том, что мой вариант почему то не срабатывает, и не понимаю почему!
12
22 июля 2009 года
alekciy
3.0K / / 13.12.2005
А FireBug-ом религия не позволяет посмотреть?

Если на странице нет трех элементов с id = Select1, Select2 и Select3, то ни чего удивительно в том, что не пашет, нет.
45K
22 июля 2009 года
itwork
14 / / 22.07.2009
Цитата: alekciy
А FireBug-ом религия не позволяет посмотреть?

Если на странице нет трех элементов с id = Select1, Select2 и Select3, то ни чего удивительно в том, что не пашет, нет.



Все на странице есть! Если б было так все просто ...

12
23 июля 2009 года
alekciy
3.0K / / 13.12.2005
Все просто. Смотри что FireBug говорит.
353
23 июля 2009 года
Nixus
840 / / 04.01.2007
Цитата: itwork

Вся проблемма в том, что мой вариант почему то не срабатывает, и не понимаю почему!



 
Код:
[COLOR="#ff0000"]var [/COLOR]id1 = din_spiski["1"];
[COLOR="#ff0000"]var [/COLOR]id2 = din_spiski["2"];
45K
23 июля 2009 года
itwork
14 / / 22.07.2009
Цитата: Nixus
 
Код:
[COLOR="#ff0000"]var [/COLOR]id1 = din_spiski["1"];
[COLOR="#ff0000"]var [/COLOR]id2 = din_spiski["2"];



Странно, все равно не работает!

353
24 июля 2009 года
Nixus
840 / / 04.01.2007
Цитата: itwork
Странно, все равно не работает!


Больше я синтаксических ошибок не вижу. Тестируйте отладчиком.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог