2011-06-27 12 views
1
<script language="JavaScript" type="text/javascript">  
    var city=[ 
    ["city1","city2","city3","city4"], 
    ["city5","city6","city7"], 
    ["city8","city9","city10"], 
    ]; 

    function getCity(){    
     var sltProvince=document.form1.province; 

     var sltCity=document.form1.city;    

     var provinceCity=city[sltProvince.selectedIndex - 1];  

     sltCity.length=1;  

     for(var i=0;i<provinceCity.length;i++){ 
      sltCity[i+1]=new Option(provinceCity[i],provinceCity[i]); 
     } 
    } 
</script> 
<FORM METHOD=POST ACTION="" name="form1"> 
     <SELECT NAME="province" onChange="getCity()"> 
      <OPTION VALUE="0">select province </OPTION> 
      <OPTION VALUE="province1">province 1 </OPTION> 
      <OPTION VALUE="province2">province2</OPTION> 
      <OPTION VALUE="province3">province3 </OPTION> 
     </SELECT> 
     <SELECT NAME="city"> 
      <OPTION VALUE="0">select the city</OPTION> 
     </SELECT> 
    </FORM> 

上記のコードは都道府県によります。私はよく分からない行があります。誰かがそれを説明できると期待しています。ありがとうございました。javascriptのコードの意味ですか?

1、これらの行は何を意味していますか?

var provinceCity=city[sltProvince.selectedIndex - 1]; 

sltCity.length=1; 
    sltCity[i+1]=new Option(provinceCity[i],provinceCity[i]); 

答えて

3

選択した地域に基づいて都市のリストを更新します。

// Get list of cities in the province, based on the index of the selected province. 
// -1 is because the first entry in the list of city lists is 0, but in the province 
// options the first one has index 1. 
var provinceCity=city[sltProvince.selectedIndex - 1]; 

// Remove all options except the first one that says "select city" 
sltCity.length=1; 

// Add all the cities for this province to <SELECT NAME="province"> 
for(var i=0;i<provinceCity.length;i++){ 
    // add an option to the with value and contents set to provinceCity[1]: 
    // HTML: <OPTION VALUE="provinceCity[1]">provinceCity[1]</OPTION> 
    sltCity[i+1]=new Option(provinceCity[i],provinceCity[i]); 
} 
+0

可変都市は、どの州にどの都市があるかを示すリストです。最初のリストはcity [0]です。しかし、最初のselectIndexは1です。 – Bemmu

+0

、ありがとうございます。 – zhuanzhou

+0

このsltCity [i + 1]をsltCity [i]に変更できますか? – zhuanzhou

1

1、これらの線は何を意味していますか?

- これは、provinceCityがその時点で選択されたComboBoxの値を保持する変数として作成されることを意味します。

sltCity.length=1; 
.... 
sltCity[i+1]=new Option(provinceCity[i],provinceCity[i]); 

州が選択されると、スクリプトはその都道府県の都市を読み込んでいます。オプションは、インターフェイスの新しいドロップダウンオプションを作成することを意味します。

1

これは、都道府県の最初のドロップダウンで行われた選択に基づいて、都市のドロップダウンにほとんど追加されています。 var provinceCity=city[sltProvince.selectedIndex - 1];は、アレイインデックスにあるcityアレイの都市のリストを取得しています。アレイのインデックスは、選択した地域のインデックスよりも1つ小さいものです。

1

最初に理解しなければならないのは、都市が配列の配列であることです。選択されたインデックスが3である場合したがって、従って

var provinceCity=city[sltProvince.selectedIndex - 1]; 

sltProvinceの選択率(選択された項目のインデックス)で市内のインデックスの値に設定provinceCityをマイナス1、provinceCityは都市に等しくなる[2]又は

["city5","city6","city7"] 

これは最終的にforループの長さに影響します。

sltCity.length=1; 
sltCity[i+1]=new Option(provinceCity[i],provinceCity[i]); 

、I(forループから)を加えたオプションの新しいインスタンスに1の値に都市配列の値を設定するsltCityの長さを設定します

<OPTION> </OPTION> 
+0

このsltCity [i + 1]をsltCity [i]に変更できますか?いいえ。sltCity [0]があります。これは「都市を選択」です。私は正しい? – zhuanzhou

関連する問題