Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Несколько id (https://javascript.ru/forum/dom-window/62885-neskolko-id.html)

DarknesS 06.05.2016 02:20

Несколько id
 
Всем здравствуйте

Нужна небольшая помощь

Есть кусок js кода
<script type="text/javascript">
var ajax = new Array();
function getCityList(sel){
var countryCode = sel.options[sel.selectedIndex].value;
document.getElementById('subcat').options.length = 0;
if(countryCode.length>0){
var index = ajax.length;
ajax[index] = new sack();
ajax[index].requestFile = 'city.php?country='+countryCode;
ajax[index].onCompletion = function(){ createCities(index) };
ajax[index].runAJAX();
}
}

function createCities(index) {
    var obj = document.getElementById('subcat');
    eval(ajax[index].response);
}

</script>


Как сделать так чтобы при выборе первого селекта автоматически менялись и 2 последующих, как я понял нужен уникальный id, как присвоить его правильно, на данный момент при выборе первого селекта, открывается 2-ой связанный. 3-й как и 2-ой должен открываться с ним вместе
$select_contry_city .= " / <select id=\"subcat\" name=\"subcat\">";
$select_contry_city .= "<option value=\"0\">Выберите подкатегорию</option>\n";
$select_contry_city .= "</select>";

$select_contry_city .= " / <select id=\"subcat\" name=\"subcat\">";
$select_contry_city .= "<option value=\"0\">Выберите подкатегорию</option>\n";
$select_contry_city .= "</select>";



Заранее спасибо

laimas 06.05.2016 07:36

Вот это sel.options[sel.selectedIndex].value, можно заменить на sel.value;

А вот это id=\"subcat\", а затем еще id=\"subcat\", неверно, нельзя помещать на страницу объекты с одинаковыми id. И name=\"subcat\">", и name=\"subcat\">", это как? Даже если вы используете Ajax, отправляя каждый элемент формы отдельно, то как сервер определит по одному и тому же имени источник запроса? В случае же обычной отправки формы вы получите значение последнего списка subcat.

И лучше так:

$select_contry_city .= ' / <select id="sub_1" name="subcat_?"><option value="0">Выберите подкатегорию</option></select>';


Это избавит парсер от бесполезного разбора строки. Для браузера \n не нужен, да и лучший HTML это одна строка без мусора, посмотреть же структуру кода можно и в отладчике.

Насчет открываться вместе, то что бы это значило - они есть на странице уже или же списки динамические, построение каждого, это предварительный запрос сервера?

DarknesS 06.05.2016 19:32

Спасибо что помогаете)

К примеру в базу внести нужно несколько городов одной страны.
Т.е при выборе России 2 последующих селекта должно автоматически открыться. на данный момент открывается 2-ой селект. и данный пост был вопросом как открывать последующие селекты. 3,4, 5 и т.д.

laimas 06.05.2016 20:09

Цитата:

Сообщение от DarknesS
Т.е при выборе России 2 последующих селекта должно автоматически открыться.

Почему 2, а к при меру не 20? )

Я задал вопрос о списках, что они из себя представляют, ответа нет. Кода исходного этих списков также нет. То что показано, это не списки даже, это так и с массой ошибок, и что вы ожидаете в ответ?

Есть понятие "связанные списки", пусть это регионы. Если выбрали страну в списке стран, то можно получить список следующий - республик, а выбрав в нем республику - следующий список, список областей, и так далее пока не получим список адресов нужного города.

При этом списки могут быть уже на клиенте, но это если объем данных мал, а для регионов, это слишком много, поэтому каждый последующий список запрашивается у сервера асинхронным запросом, а что запрашивается, определяется выбором в предыдущем списке. На сервере в базе эти данные хранятся в связанных по ключам таблицах.

Чего там у вас, почему 2 и чего 2, и как это связано не понять, а значит и что-то ответить конкретно невозможно.

DarknesS 06.05.2016 20:20

Хорошо, покажу на скриншоте

За основу взял код "связанных списков". т.е города связаны с со странами, в данном случае. подкатегории связаны с категорией

При выборе категории фильм. должно открываться все селекты.
Подкатегория подразумевает в моем случае - жанры.

DarknesS 06.05.2016 21:32

Решил проблему продублировав js код и прописав в onchange onchange=\"getCityList(this);getCityList2(this);

laimas 07.05.2016 04:24

Цитата:

Сообщение от DarknesS
Подкатегория подразумевает в моем случае - жанры.

Жанры у вас, это один список (раскрытый), а фильмы выбранного жанра, это тоже один список, а не несколько.


Часовой пояс GMT +3, время: 08:18.