Помощ за код със Javascript

Pupe64etoo_92

Registered
Имаме два селекта един за държави а другия за области.
За областите със id=city си ги създавам със два масива като всичко е с джаваскрипт.

[js]
var CountryId=document.getElementById("state");
var CityId=document.getElementById("city");
var CityText;
var CityValue;
var i;
[/js]
Вземам идито на държавите със id=state, другото ид е ясно.
Като CityText ще съдържа масив със областите, а CityValue съответно тяхната стойност, а var i; се използва във for цикли.

[js]
CountryId.onchange=function(){
var SelectOption=CountryId.options[CountryId.selectedIndex].value;
if(SelectOption=="AL"){
CityText=new Array("<? echo $lang['oblast_selected'];?>","<? echo $lang['oblast_albaniq'];?>","<? echo $lang['oblast_berat'];?>");
CityValue=new Array("0","1","2");
for(i=0;i<CityText.length;i++){
CityId.options=new Option(CityText,CityValue);
if(CityId.options.value=="<? echo $city;?>"){CityId.options.selected=true;}

}else if(SelectOption=="DZ"){
CityText=new Array("<? echo $lang['oblast_selected'];?>","<? echo $lang['oblast_algeria'];?>","<? echo $lang['oblast_adrar'];?>","<? echo $lang['oblast_annaba'];?>","<? echo $lang['oblast_shlef'];?>","<? echo $lang['oblast_laguna'];?>","<? echo $lang['oblast_umm_el_buagi'];?>");
CityValue=new Array("0","3","4","5","6","7","8");

for(i=0;i<CityText.length;i++){
CityId.options=new Option(CityText,CityValue);
if(CityId.options.value=="<? echo $city;?>"){CityId.options.selected=true;}
}

};
window.onload = CountryId.onchange;

[/js]

Както споменах по-горе имаме два масива със областите и тяхната стойност. От там преброяваме според коя държава сме избрали. Ако сме избрали Албания тя има стойност AL, Съответно правим if конструкция за албания
PHP:
if(SelectOption=="AL"){}
във конструкцията се съдържат двата арея и със for цикъл създавам опциите като обхождам масива със заглавията на държавите, тоест CityText и според броя на ключовете създавам опциите. А за конструкцията
PHP:
if(CityId.options[i].value=="<? echo $city;?>"){CityId.options[i].selected=true;}
Вадя от сяла стойноста, ако има избрана такава и селектвам опцията която съдържа тази стойност.

А
PHP:
 window.onload = CountryId.onchange;
Използвам за да ми даде веднага коя държава е избрана(селектната).

Проблема ми е че за всяка държава са различен брой областите и, Ако се избрали например държавата със стойност DZ която съдържа 7 области, и веднага след това като избера Албания със стойност AL която има три области, след тези три области се прибавят и на DZ до 7.

И от там ми идва проблема трябва да измисля как да преброявам колко области има дадената държава и излишните със remove(); да ги махам.
Тоест нещо такова :
[js]function RemoveCityId(){
var i;
for(i=0;i<CityText.length;i++){CityId.options.remove(i);}
} [/js]

При това положение като я извикам горе след
CountryId.onchange=function(){
var SelectOption=CountryId.options[CountryId.selectedIndex].value;
RemoveCityId();

Ми изтрива всичките създадени опции и причината мисля че е
PHP:
 window.onload = CountryId.onchange;
ако не се бъркам нещо.

Въпросът ми е какъв вариянт да измисля да премахвам излишните опции които остават от друга държава с повече области от съответната избрана с по-малко области.

Очаквам предложения.
 
Аз бих променил леко цикъла, който добавя опциите, така че сам да си трие излишните, ето така:

[js]
for(i=0;i < Math.max(CityText.length, CityId.options.length); i++){
if(typeof CityValue == 'undefined') {
// Трием
CityId.options = null;
} else {
// Добавяме
CityId.options=new Option(CityText,CityValue);
if(CityId.options.value=="<? echo $city;?>") CityId.options.selected=true;
}
}
[/js]
 

Back
Горе