Проблема с <option selected>

 
0
 
JavaScript
ava
Гость | 16.11.2003, 11:50
<script> 
arr_categories = new Array();
arr_categories[0] = new Array();
arr_categories[0][0] = new Option('all_cats_0_1', '4');
arr_categories[0][1] = new Option('all_cats_0_2', '5');
arr_categories[0][2] = new Option('all_cats_0_3', '12');
arr_categories[8] = new Array();
arr_categories[8][0] = new Option('cats_8_1', '4');
arr_categories[8][1] = new Option('cats_8_2', '5', true, true);
arr_categories[11] = new Array();
arr_categories[11][0] = new Option('cats_11_1', '12');

arr_brands = new Array();
arr_brands[0] = new Array();
arr_brands[0][0] = new Option('ASUS', '4');
arr_brands[0][1] = new Option('INTEL', '3');
arr_brands[0][2] = new Option('CLICKER', '5');
arr_brands[4] = new Array();
arr_brands[4][0] = new Option('ASUS', '4');
arr_brands[5] = new Array();
arr_brands[5][0] = new Option('INTEL', '3');
arr_brands[5][0] = new Option('OTHER', '3');
arr_brands[12] = new Array();
arr_brands[12][0] = new Option('CLICKER', '5');

function change(src_select_id, trgt_select_id, trg_vals_arr)
{
src_id = document.getElementById(src_select_id).value;
trg = document.getElementById(trgt_select_id).options;
trg.length = 1;
for(var z = 0; z < trg_vals_arr[src_id].length; z++)
trg[trg.length] = trg_vals_arr[src_id][z];
}
</script>

<select name="p_sections" id="sections" onChange="change('sections', 'categories', arr_categories); change('categories', 'brands', arr_brands);">
<option value="0" id="0">all sections</option>
<option value="8" selected>desktops</option>
<option value="11">misc</option>
</select>
<select name="p_categories" id="categories" onChange="change('categories', 'brands', arr_brands)">
<option value="0" id="0">all categories</option>
</select>
<select name="p_brands" id="brands">
<option value="0" id="0">all brands</option>
</select>
<script>change('sections', 'categories', arr_categories);</script>
<script>change('categories', 'brands', arr_brands);</script>


Вопрос: почему, когда я всё это запускаю, selected у меня cats_8_1 а не cats_8_2 ?
Ответы (7)
ava
Гость | 16.11.2003, 11:51 #
Причём в Опере 7.22 все нормально, а в ИЕ 6 все совсем не нормально
ava
SVK | 17.11.2003, 12:50 #
Непонятно, зачем такие навороты и что собственно надо.
А в скрипте копаться, не зная, что он должен делать, совсем неохота.
Форум - это не замена дебаггера.
Выделите и опишите проблему четко - может и более красивые решения найдутся.
ava
Гость | 17.11.2003, 14:01 #
Есть три селекта, один рядом с другим.
onChange первого селекта запускает функцию, которая строит options для второго селекта, причём одна из опций может быть selected, затем аналогично строятся опции для третьего селекта.
Смысл - показать список категорий в зависимости от раздела и соотвественно бренды в зависимости от выбранной категории.

Вопрос не как сделать это иначе, а почему не работает именно этот вариант, потому что не понятно как может быть Option('cats_8_2', '5', true, true); то есть у нее selected = true, а в результате показывается опция на одну выше этой самой selected
ava
SVK | 18.11.2003, 11:14 #
В Netscape7 тоже все нормально. В IE 6, вероятно, какие-то проболемы с синхронизацией. Заработало, когда поставил:
<html><body onload="setSelects();">
....
....

<script>
function setSelects()
{ change('sections', 'categories', arr_categories);
change('categories', 'brands', arr_brands);
}
</script>
</body></html>
ava
Гость | 18.11.2003, 12:18 #
Спасибо smile
Победил
<script>document.body.onload = function(){ setSelects() };</script>

Хотя всё-таки не совсем понятно в чём именно глюк. Где есть доки с подробностями про генерацию документа в бразерах или ещё что-нибудь по теме?
ava
SVK | 18.11.2003, 19:54 #
А зачем все это ставить скриптом? И зачем "function(){ setSelects() };" ?
Что, по простому "<body onload="setSelects();">" не работало?
Плохо, если так - у меня работало. Значит, может и сейчас сбоить при каких-то условиях.

Я бы, вообще-то отделил мух от котлет. Сначала заполнил бы селекты, а потом уже выбирал бы нужный опшон. Так было бы дубовее и потому - надежнее.
ava
Гость | 18.11.2003, 20:17 #
Не, всё нормально работало smile "<body onload="setSelects();">" = "document.body.onload = function(){ setSelects() };" Просто header документа вместе с тэгом бади на всех страницах одинаковый, а селекты грузятся только на одной..
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
  SVK   Гость
advanced
Отправить