基于JS實現(xiàn)省市聯(lián)動效果代碼分享
在日常項目開發(fā)階段經(jīng)常見到下拉框二級聯(lián)動效果,尤其是涉及地區(qū)、品種等有多級選項時。比如說:常見的省市聯(lián)動下拉框,在選擇省份時,城市列表也會更隨改變。

思路:
1,所謂聯(lián)動效果,是指出發(fā)父級的數(shù)據(jù)變化時,會影響到關(guān)聯(lián)性子級數(shù)據(jù)元素的變化。
下面是造的省市的數(shù)據(jù):
var linkDatas = {
provinces:[
{
"code":"0",
"name":"請選擇"
},
{
"code":"1",
"name":"北京"
},
{
"code":"2",
"name":"天津"
},
{
"code":"3",
"name":"河北"
},
{
"code":"4",
"name":"湖北"
},
{
"code":"5",
"name":"廣東"
},
{
"code":"6",
"name":"其他"
}
],
citys:{
0:[
"請選擇"
],
1:[
"朝陽區(qū)",
"海淀區(qū)",
"東城區(qū)",
"西城區(qū)",
"房山區(qū)",
"其他"
],
2:[
"天津"
],
3:[
"滄州",
"石家莊",
"秦皇島",
"其他"
],
4:[
"武漢市",
"宜昌市",
"襄樊市",
"其他"
],
5:[
"廣州市",
"深圳市",
"汕頭市",
"佛山市",
"珠海市",
"其他"
],
6:[
"其他"
]
}
};
2,根據(jù)數(shù)據(jù)動態(tài)生成option節(jié)點:
function addOptions(target,options){
var optionEle = null,
target = target,
option = options,
optionLen = options.length;
for(var i = 0;i < optionLen;i++){
optionEle = document.createElement('option');
optionEle.value = option[i].value;
optionEle.text = option[i].text;
target.options.add(optionEle);
}
}
3,根據(jù)上述省市數(shù)據(jù),其中code代表“省級”指向“城市”的標(biāo)識符,當(dāng)省級的數(shù)據(jù)變更時,出發(fā)change事件:
pro.onchange = function(){
console.log(this);
var ct = city[this.value],
ctLen = ct.length,
ctBox = [];
c.innerHTML = "";
/*添加城市*/
for(var j = 0;j < ctLen;j++){
ctBox.push({
"text" : ct[j],
"value": ct[j]
});
}
addOptions(c,ctBox);
}
HTML代碼:
<div class="content"> <h3>下拉框聯(lián)動效果</h3> <p>省份: <select name="provinces" id="provinces"> </select> </p> <p> 市: <select name="citys" id="citys"> </select> </p> </div>
全部JavaScript代碼:
var linkDatas = {
provinces:[
{
"code":"0",
"name":"請選擇"
},
{
"code":"1",
"name":"北京"
},
{
"code":"2",
"name":"天津"
},
{
"code":"3",
"name":"河北"
},
{
"code":"4",
"name":"湖北"
},
{
"code":"5",
"name":"廣東"
},
{
"code":"6",
"name":"其他"
}
],
citys:{
0:[
"請選擇"
],
1:[
"朝陽區(qū)",
"海淀區(qū)",
"東城區(qū)",
"西城區(qū)",
"房山區(qū)",
"其他"
],
2:[
"天津"
],
3:[
"滄州",
"石家莊",
"秦皇島",
"其他"
],
4:[
"武漢市",
"宜昌市",
"襄樊市",
"其他"
],
5:[
"廣州市",
"深圳市",
"汕頭市",
"佛山市",
"珠海市",
"其他"
],
6:[
"其他"
]
}
};
function addOptions(target,options){
var optionEle = null,
target = target,
option = options,
optionLen = options.length;
for(var i = 0;i < optionLen;i++){
optionEle = document.createElement('option');
optionEle.value = option[i].value;
optionEle.text = option[i].text;
target.options.add(optionEle);
}
}
function provincesCitysLink(pro,c){
var LD = linkDatas,
provinces = LD.provinces,
city = LD.citys,
initCity = city[0],
proBox = [];
/*添加省份*/
for(var i = 0;i < provinces.length;i++){
proBox.push({
"text" : provinces[i].name,
"value": provinces[i].code
})
}
addOptions(pro,proBox);
/*初始化城市*/
addOptions(c,[{
"text" : initCity,
"value": initCity
}]);
/*添加聯(lián)動事件*/
pro.onchange = function(){
console.log(this);
var ct = city[this.value],
ctLen = ct.length,
ctBox = [];
c.innerHTML = "";
/*添加城市*/
for(var j = 0;j < ctLen;j++){
ctBox.push({
"text" : ct[j],
"value": ct[j]
});
}
addOptions(c,ctBox);
}
}
var provinces = document.getElementById('provinces'),
citys = document.getElementById('citys');
provincesCitysLink(provinces,citys);
- 基于JavaScript實現(xiàn)省市聯(lián)動效果
- JavaScript實現(xiàn)省市聯(lián)動效果
- JavaScript實現(xiàn)省市聯(lián)動過程中bug的解決方法
- js省市聯(lián)動效果完整實例代碼
- JSON+HTML實現(xiàn)國家省市聯(lián)動選擇效果
- JavaScript二維數(shù)組實現(xiàn)的省市聯(lián)動菜單
- JavaScript省市聯(lián)動實現(xiàn)代碼
- js實現(xiàn)省市聯(lián)動效果的簡單實例
- javascript 09年最新版的省市聯(lián)動
- JavaScript實現(xiàn)簡單省市聯(lián)動
相關(guān)文章
使用TextRange獲取輸入框中光標(biāo)的位置的代碼
使用TextRange獲取輸入框中光標(biāo)的位置的代碼...2007-03-03
Javascript基礎(chǔ)之?dāng)?shù)組的使用
這篇文章主要介紹了Javascript基礎(chǔ)之?dāng)?shù)組的使用的相關(guān)資料,介紹的非常詳解,具有參考借鑒價值,感興趣的朋友一起學(xué)習(xí)吧2016-05-05
js中eval()函數(shù)和trim()去掉字符串左右空格應(yīng)用
對于js中eval()函數(shù)的理解和寫一個函數(shù)trim()去掉字符串左右空格;對于js中eval()函數(shù)的理解是本人心得不一定正確,感興趣的朋友參考下,或許對你學(xué)習(xí)eval()函數(shù)有所幫助2013-02-02
理解Javascript_15_作用域分配與變量訪問規(guī)則,再送個閉包
在閱讀本博文之前,請先閱讀《理解Javascript_13_執(zhí)行模型詳解》 在'執(zhí)行模型詳解'中講到了關(guān)于作用域分配的問題,這一篇博文將詳細的說明函數(shù)對象、作用域鏈與執(zhí)行上下文的關(guān)系。2010-10-10
深入剖析JavaScript中的函數(shù)currying柯里化
下面小編就為大家?guī)硪黄钊肫饰鯦avaScript中的函數(shù)currying柯里化。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考,一起跟隨小編過來看看吧2016-04-04
JS自定義函數(shù)實現(xiàn)時間戳轉(zhuǎn)換成date的方法示例
這篇文章主要介紹了JS自定義函數(shù)實現(xiàn)時間戳轉(zhuǎn)換成date的方法,結(jié)合具體實例形式分析了javascript時間戳與日期格式的計算與轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下2017-08-08

