Доброго времени суток! Нужна помощь в таком вопросе, существует код, который создает два связанных выпадающих списка: к примеру, в одном выбираем страну, в другом город этой страны. Вот нужно что бы после выбора города открывалась другая страница с инфой об этой стране, к примеру.
Вот код:
<head>
<title>Выбор страны</title>
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript"><!--
window.onload = function() {
dynamicSelect("Country", "City");
}
//--></script>
</head>
<body>
<form action="#" method="post">
<select name="Country" id="Country">
<option value="select">Выберите страну...</option>
<option value="Russia">Россия</option>
<option value="Ukraine">Украина</option>
<option value="Belarus">Беларусь</option>
</select>
<select name="City" id="City">
<option class="select" value="select">Выберите город...</option>
<option class="Russia" value="Moscow">Москва</option>
<option class="Russia" value="SPeterburg">Санкт-Петербург</option>
<option class="Russia" value="Ekaterinburg">Екатеринбург</option>
<option class="Ukraine" value="Kiev">Киев</option>
<option class="Ukraine" value="Sevastopol>Севастополь</option>
<option class="Belarus" value="Minsk">Минск</option>
<option class="Belarus" value="Bobruisk">Бобруйск</option>
</select>
</form>
</body>
</html>
Вот ЯваСкрипт:
[JS]function dynamicSelect(id1, id2) {
// Сперва необходимо проверить поддержку W3C DOM в браузере
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++) {
// Если название класса клонированного option эквивалентно "select" // либо эквивалентно значению option первого списка
if (clonedOptions[i].className.match(pattern1) ||
clonedOptions[i].className.match(pattern2)) {
// его нужно клонировать в динамически создаваемый список
sel2.appendChild(clonedOptions[i].cloneNode(true));
}
}
}
// Вызов скрипта при загрузке страницы
window.onload = function() {
dynamicSelect("Country", "City");
}[/JS]
Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
|