нужно адаптировать скрипт под ассоциативный массив
здраствуйте,
нашел неплохой скриптик, полностью меня устраивающий кроме одного: он написан под индексный массив, а в моем случае массив получается ассоциативный. сам скрипт найден здесь и в оригинале выглядит так: но в моем случае пхп получает инфу из мускула и отправляет следующую строку<script type="text/javascript"> <!-- /* written by alexander shurkayev <alshur@ya.ru> | [url]http://htmlcssjs.ru[/url] */ // далее у нас следует массив из улиц, содержащих дома, разделённые запятой var aHouseValues = new Array( "12/15,18,123", "2,4", "2/8,10/12", "3", "2,4,12,5/6,8" ); // ф-ция, возвращающая массив домов по заданной улице function getHouseValuesByStreet(index){ var sHouseValues = aHouseValues[index]; return sHouseValues.split(","); // преобразуем строку в массив домов } // главная ф-ция, выводящая динамически список домов function MkHouseValues(index){ var aCurrHouseValues = getHouseValuesByStreet(index); var nCurrHouseValuesCnt = aCurrHouseValues.length; var oHouseList = document.forms["address"].elements["house"]; var oHouseListOptionsCnt = oHouseList.options.length; oHouseList.length = 0; // удаляем все элементы из списка домов for (i = 0; i < nCurrHouseValuesCnt; i++){ // далее мы добавляем необходимые дома в список if (document.createElement){ var newHouseListOption = document.createElement("OPTION"); newHouseListOption.text = aCurrHouseValues[i]; newHouseListOption.value = aCurrHouseValues[i]; // тут мы используем для добавления элемента либо метод IE, либо DOM, которые, alas, не совпадают по параметрам… (oHouseList.options.add) ? oHouseList.options.add(newHouseListOption) : oHouseList.add(newHouseListOption, null); }else{ // для NN3.x-4.x oHouseList.options[i] = new Option(aCurrHouseValues[i], aCurrHouseValues[i], false, false); } } } // инициируем изменение элементов в списке домов, в зависимости от текущей улицы MkHouseValues(document.forms["address"].elements["street"].selectedIndex); //--> </script> var aHouseValues = new Array(); aHouseValues["коммунарский"] = "16/6, 20, 115"; aHouseValues["красноармейская"] = "20"; aHouseValues["гастелло"] = "120"; aHouseValues["мерлина"] = "20"; aHouseValues["кукушкина"] = "100"; и список улиц <select name="street"> формируется по запросу из мускл. пробовал сделать индексный массив - номера домов одной улицы лепятся к другой, а ее дома к третьей. индексы не сходятся. собсно мне нужна ваша помощь, чтобы переиначить скрипт, так как убив уйму времени, я так и не смог понять как переиначить скрипт самостоятельно, в силу того что яваскрипт для меня лес темный... :help: :) |
почти получилось, осталось мелочь...
сейчас скрипт выглядит так <!-- var aHouseValues = new Array(); aHouseValues["коммунарский"] = "16/6, 20, 115"; aHouseValues["красноармейская"] = "20"; aHouseValues["гастелло"] = "120"; aHouseValues["мерлина"] = "20"; aHouseValues["кукушкина"] = "100"; // ф-ция, возвращающая массив домов по заданной улице function getHouseValuesByStreet(param){ var sHouseValues = aHouseValues[param]; return sHouseValues.split(", "); // преобразуем строку в массив домов } // главная ф-ция, выводящая динамически список домов function MkHouseValues(param){ var aCurrHouseValues = getHouseValuesByStreet(param); var oHouseList = document.forms["address"].elements["house"]; var oHouseListOptionsCnt = oHouseList.options.length; oHouseList.length = 0; // удаляем все элементы из списка домов for (aCurrHouseValue in aCurrHouseValues){ // далее мы добавляем необходимые дома в список if (document.createElement){ var newHouseListOption = document.createElement("OPTION"); newHouseListOption.text = aCurrHouseValues[aCurrHouseValue]; newHouseListOption.value = aCurrHouseValues[aCurrHouseValue]; // тут мы используем для добавления элемента либо метод IE, либо DOM, которые, alas, не совпадают по параметрам… (oHouseList.options.add) ? oHouseList.options.add(newHouseListOption) : oHouseList.add(newHouseListOption, null); }else{ // для NN3.x-4.x oHouseList.options[aCurrHouseValue] = new Option(aCurrHouseValues[aCurrHouseValue], aCurrHouseValues[aCurrHouseValue], false, false); } } } // инициируем изменение элементов в списке домов, в зависимости от текущей улицы MkHouseValues(document.forms["address"].elements["street"].value); //--> а форма так <form name="address" action="#"> Улица: <select name="street" onChange="MkHouseValues(this.Value)"> <OPTION VALUE="гастелло">гастелло</OPTION> <OPTION VALUE="коммунарский">коммунарский</OPTION> <OPTION VALUE="красноармейская">красноармейская</OPTION> <OPTION VALUE="кукушкина">кукушкина</OPTION> <OPTION VALUE="мерлина">мерлина</OPTION> </select> Дом: <select name="house"> <option value="N/A">выберите улицу</option> </select> </form> если в форме вместо <select name="street" onChange="MkHouseValues(this.Value)"> я поставлю <select name="street" onChange="MkHouseValues('коммунарский' )"> то дома по коммунарскому находятся. то есть осталась одна проблема - корректно передать value из option в яваскрипт... помогите пожалуйста |
блин, неужели никто не поможет? =(
|
metis,
javascript язык регистрозависимый !!! <select name="street" on |
блин, заработало! и правда проблема в регистре оказалась=) спасибо!
|
Цитата:
|
Цитата:
<iframe name='FOO'> </iframe> <form target='foo'> <input type='submit' value='всё относительно' /> </form> |
Как в этом скрипте для каждого значения option задать отдельный value?
|
Часовой пояс GMT +3, время: 23:02. |