2011-12-16 7 views
0

都市、州のドロップダウンメニューのコードが見つかりました。それは完璧に動作しますが、私は次のコードに米国の州を追加することによって、追加の機能を実装しています:javascript、.split()、追加変数を実装

//countries array 
var countries = Object(); 
countries['Africa'] = '|Algeria|Angola|Benin'; 

//state array 
var city_states = Object(); 
city_states['United States'] = '|Washington DC||Alabama|Alaska'; 

これは、米国の都市の配列ですが、私はそうのような状態の略語を追加したい:DC、AL、 AKというようにこのようなメニューに送信する:

function setRegions() 

    { 
     for (region in countries) 
      document.write('<option value="' + region + '">' + region + '</option>'); 
    } 

function set_country(oRegionSel, oCountrySel, oCity_StateSel) 
{ 
    var countryArr; 
    oCountrySel.length = 0; 
    oCity_StateSel.length = 0; 
    var region = oRegionSel.options[oRegionSel.selectedIndex].text; 
    if (countries[region]) 
    { 
     oCountrySel.disabled = false; 
     oCity_StateSel.disabled = true; 
     oCountrySel.options[0] = new Option('SELECT COUNTRY',''); 
     countryArr = countries[region].split('|'); 
     for (var i = 0; i < countryArr.length; i++) 
      oCountrySel.options[i + 1] = new Option(countryArr[i], countryArr[i]); 
     document.getElementById('txtregion').innerHTML = region; 
     document.getElementById('txtplacename').innerHTML = ''; 
    } 
    else oCountrySel.disabled = true; 
} 

function set_city_state(oCountrySel, oCity_StateSel) 
{ 
    var city_stateArr; 
    oCity_StateSel.length = 0; 
    var country = oCountrySel.options[oCountrySel.selectedIndex].text; 
    if (city_states[country]) 
    { 
     oCity_StateSel.disabled = false; 
     oCity_StateSel.options[0] = new Option('SELECT NEAREST DIVISION',''); 
     city_stateArr = city_states[country].split('|'); 
     for (var i = 0; i < city_stateArr.length; i++) 
      oCity_StateSel.options[i+1] = new Option(city_stateArr[i],city_stateArr[i]); 
     document.getElementById('txtplacename').innerHTML = country; 
    } 
    else oCity_StateSel.disabled = true; 
} 

function print_city_state(oCountrySel, oCity_StateSel) 
{ 
    var country = oCountrySel.options[oCountrySel.selectedIndex].text; 
    var city_state = oCity_StateSel.options[oCity_StateSel.selectedIndex].text; 
    if (city_state && city_states[country].indexOf(city_state) != -1) 
     document.getElementById('txtplacename').innerHTML = city_state + ', ' + country; 
    else document.getElementById('txtplacename').innerHTML = country; 
} 

私は国家の略語の追加の配列を追加することを考えていたが、私は単純な状態の略語を追加し、既に構築された配列がでわずか罰金を行うだろうと思いますsetregions()に別の値を追加し、+ region +の代わりに+ abbreviation +を追加します。任意のアイデアを実装する方法は? -ありがとうございました。

答えて

1

あなたはこのような何か行うことができますアメリカの配列(オブジェクト)ではなく、文字列の配列がある場合:

function State(longName, shortName) { 
    this.longName = longName; 
    this.shortName = shortName; 
} 

を私は略語が何であるかを知っているが、この中のようにそれらを保存しませんお使いのアレイ
するvar cityStates = "状態:略称|ワシントンDC:WDC | ETC:など" あなたは50個の状態オブジェクトを持つ新しい配列 "状態" を与えるだろう

var stateNames = cityStates.split("|"); 

var states = new Array(stateNames.length); 

for (i=0; i<states.length; i++) 
    var longName = stateNames[i].split(":")[0]; 
    var shortName = stateNames[i].split(":")[1]; 
    states[i] = new State(longName,shortName); 
} 

、各このように呼び出すことができます:

states[0] //(returns a State object at index 0) 
states[0].longName //(returns the long name) 
states[0].shortName //(returns the abbreviated name) 
+0

javascriptのはまだでこれを書くことがあります。 関数setRegions()(国における地方)のため { のdocument.write( '<オプション値= "' +領域+ '">' +領域+ ''); } 変数を割り当てることなくどのようにしたらいいですか? – prkarpi

+0

申し訳ありませんが、どういう意味ですか? – Ozzy

+0

私はHTMLを書き込むsetRegions()を持っていますが、両方のフィールドに両方の変数+ region +を持ち、状態の省略形と状態を別々に書きません。私はが必要です。 – prkarpi

関連する問題