Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.03.2011, 22:10
Новичок на форуме
Отправить личное сообщение для metis Посмотреть профиль Найти все сообщения от metis
 
Регистрация: 12.03.2011
Сообщений: 4

нужно адаптировать скрипт под ассоциативный массив
здраствуйте,
нашел неплохой скриптик, полностью меня устраивающий кроме одного: он написан под индексный массив, а в моем случае массив получается ассоциативный.
сам скрипт найден здесь и в оригинале выглядит так:
<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>


форма в примере выглядит так:

<form name="address" action="#">
Улица:
<select name="street" onChange="MkHouseValues(this.selectedIndex)">
<option value="ул. Хрюнделя">ул.&nbsp;Хрюнделя</option>
<option value="пер. Неизвестного">пер.&nbsp;Неизвестного</option>
<option value="ул. Оттопыркина">ул.&nbsp;Оттопыркина</option>
<option value="ул. Мир-Труд-Май">ул.&nbsp;Мир-Труд-Май</option>
<option value="бул. Нихренасебефамилия">бул.&nbsp;Нихренасебефамилия</option>
</select>
&nbsp;Дом:
<select name="house">
<option value="N/A">N/A</option>
</select>
</form>
но в моем случае пхп получает инфу из мускула и отправляет следующую строку
var aHouseValues = new Array();
aHouseValues["коммунарский"] = "16/6, 20, 115";
aHouseValues["красноармейская"] = "20";
aHouseValues["гастелло"] = "120";
aHouseValues["мерлина"] = "20";
aHouseValues["кукушкина"] = "100";

и список улиц <select name="street"> формируется по запросу из мускл.
пробовал сделать индексный массив - номера домов одной улицы лепятся к другой, а ее дома к третьей. индексы не сходятся.
собсно мне нужна ваша помощь, чтобы переиначить скрипт, так как убив уйму времени, я так и не смог понять как переиначить скрипт самостоятельно, в силу того что яваскрипт для меня лес темный...

Последний раз редактировалось metis, 13.03.2011 в 10:06.
Ответить с цитированием
  #2 (permalink)  
Старый 13.03.2011, 12:32
Новичок на форуме
Отправить личное сообщение для metis Посмотреть профиль Найти все сообщения от metis
 
Регистрация: 12.03.2011
Сообщений: 4

почти получилось, осталось мелочь...

сейчас скрипт выглядит так

<!--
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>
&nbsp;Дом:
<select name="house">
<option value="N/A">выберите улицу</option>
</select>
</form>


если в форме вместо <select name="street" onChange="MkHouseValues(this.Value)">
я поставлю <select name="street" onChange="MkHouseValues('коммунарский' )">
то дома по коммунарскому находятся. то есть осталась одна проблема - корректно передать value из option в яваскрипт...
помогите пожалуйста
Ответить с цитированием
  #3 (permalink)  
Старый 13.03.2011, 20:32
Новичок на форуме
Отправить личное сообщение для metis Посмотреть профиль Найти все сообщения от metis
 
Регистрация: 12.03.2011
Сообщений: 4

блин, неужели никто не поможет? =(
Ответить с цитированием
  #4 (permalink)  
Старый 13.03.2011, 21:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

metis,
javascript язык регистрозависимый !!!
<select name="street" onChange="MkHouseValues(this.Value)">
Ответить с цитированием
  #5 (permalink)  
Старый 14.03.2011, 05:54
Новичок на форуме
Отправить личное сообщение для metis Посмотреть профиль Найти все сообщения от metis
 
Регистрация: 12.03.2011
Сообщений: 4

блин, заработало! и правда проблема в регистре оказалась=) спасибо!
Ответить с цитированием
  #6 (permalink)  
Старый 14.03.2011, 10:39
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от рони
javascript язык регистрозависимый !!!
<select name="street" ONcHaNgE
HTML-то регистронезависим
Ответить с цитированием
  #7 (permalink)  
Старый 14.03.2011, 12:47
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

Цитата:
HTML-то регистронезависим
<iframe name='FOO'>
</iframe>
<form target='foo'>
	<input type='submit' value='всё относительно' />
</form>
Ответить с цитированием
  #8 (permalink)  
Старый 30.04.2013, 14:58
Новичок на форуме
Отправить личное сообщение для exage Посмотреть профиль Найти все сообщения от exage
 
Регистрация: 02.04.2013
Сообщений: 7

Как в этом скрипте для каждого значения option задать отдельный value?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужно написать скрипт редиректа ngprog Работа 1 20.01.2011 08:15
скрипт на сайт под Джумлой, не работает в FF matysse Элементы интерфейса 1 11.10.2010 21:14
доработать скрипт под IE 8 harryer Internet Explorer 1 23.09.2009 11:53
Скрипт под форумы vB UndeadDragon Opera, Safari и др. 0 19.09.2009 18:22
Люди, помогите адаптировать скрипт под Оперу KiLLk Opera, Safari и др. 1 01.06.2009 01:05