Страница 1 из 1

аботa с динамическими списками

Добавлено: 22 июл 2009, 13:06
itwork
Всем привет,
Есть 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[i].className.match(pattern1) || clonedOptions[i].className.match(pattern2)) {
			sel2.appendChild(clonedOptions[i].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[i]["1"];
		id2 = din_spiski[i]["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()
Вся проблемма в том, что мой вариант почему то не срабатывает, и не понимаю почему!?