天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

JavaScript 聯(lián)動的無限級封裝類,數(shù)據(jù)采用非Ajax方式,隨意添加聯(lián)動

html代碼
復(fù)制代碼 代碼如下:
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<title>試試</title>
</head>
<script type="text/Javascript">
var data = {
'1' : 'a001',
'2' : 'a002',
'3' : 'a003',
'4' : 'a004',
'5' : 'a005',
'6' : 'a006'
};
var data2 = {
'1' : { '101' : 'a101', '102' : 'a102', '103' : 'a103', '104' : 'a104' },
'2' : { '201' : 'a201', '202' : 'a202', '203' : 'a203', '204' : 'a204' },
'3' : { '301' : 'a301', '302' : 'a302', '303' : 'a303', '304' : 'a304' },
'4' : { '401' : 'a401', '402' : 'a402', '403' : 'a403', '404' : 'a404' },
'5' : { '501' : 'a501', '502' : 'a502', '503' : 'a503', '504' : 'a504' },
'6' : { '601' : 'a601', '602' : 'a602', '603' : 'a603', '604' : 'a604' },
'101' : { '10101' : 'a10101', '10102' : 'a10102', '10103' : 'a10103', '10104' : 'a10104' },
'102' : { '10201' : 'a10201', '10202' : 'a10202', '10203' : 'a10203', '10204' : 'a10204' },
'103' : { '10301' : 'a10301', '10302' : 'a10302', '10303' : 'a10303', '10304' : 'a10304' },
'104' : { '10401' : 'a10401', '10402' : 'a10402', '10403' : 'a10403', '10404' : 'a10404' },
'201' : { '20101' : 'a20101', '20102' : 'a20102', '20103' : 'a20103', '20104' : 'a20104' },
'202' : { '20201' : 'a20201', '20202' : 'a20202', '20203' : 'a20203', '20204' : 'a20204' },
'203' : { '20301' : 'a20301', '20302' : 'a20302', '20303' : 'a20303', '20304' : 'a20304' },
'204' : { '20401' : 'a20401', '20402' : 'a20402', '20403' : 'a20403', '20404' : 'a20404' },
'301' : { '30101' : 'a30101', '30102' : 'a30102', '30103' : 'a30103', '30104' : 'a30104' },
'302' : { '30201' : 'a30201', '30202' : 'a30202', '30203' : 'a30203', '30204' : 'a30204' },
'303' : { '30301' : 'a30301', '30302' : 'a30302', '30303' : 'a30303', '30304' : 'a30304' },
'304' : { '30401' : 'a30401', '30402' : 'a30402', '30403' : 'a30403', '30404' : 'a30404' },
'401' : { '40101' : 'a40101', '40102' : 'a40102', '40103' : 'a40103', '40104' : 'a40104' },
'402' : { '40201' : 'a40201', '40202' : 'a40202', '40203' : 'a40203', '40204' : 'a40204' },
'403' : { '40301' : 'a40301', '40302' : 'a40302', '40303' : 'a40303', '40304' : 'a40304' },
'404' : { '40401' : 'a40401', '40402' : 'a40402', '40403' : 'a40403', '40404' : 'a40404' },
'501' : { '50101' : 'a50101', '50102' : 'a50102', '50103' : 'a50103', '50104' : 'a50104' },
'502' : { '50201' : 'a50201', '50202' : 'a50202', '50203' : 'a50203', '50204' : 'a50204' },
'503' : { '50301' : 'a50301', '50302' : 'a50302', '50303' : 'a50303', '50304' : 'a50304' },
'504' : { '50401' : 'a50401', '50402' : 'a50402', '50403' : 'a50403', '50404' : 'a50404' },
'601' : { '60101' : 'a60101', '60102' : 'a60102', '60103' : 'a60103', '60104' : 'a60104' },
'602' : { '60201' : 'a60201', '60202' : 'a60202', '60203' : 'a60203', '60204' : 'a60204' },
'603' : { '60301' : 'a60301', '60302' : 'a60302', '60303' : 'a60303', '60304' : 'a60304' },
'604' : { '60401' : 'a60401', '60402' : 'a60402', '60403' : 'a60403', '60404' : 'a60404' }
};
window.$ = function(id) {
if(typeof id == 'string') {
return document.getElementById(id);
}
return id;
}
/**
* 事件處理工具類
*
* @author bao110908
*/
var Event = function(){}
Event = {
/**
* 為 element 使用 handler 處理程序添加至 event 事件
* 兼容 IE 及 Firefox 等瀏覽器
*
* 例如為 botton 對象添加 onclick 事件,使用 clickEvent
* 方法作為處理程序:
* Event.addEvent(botton, 'click', clickEvent);
*
* @param element 需要添加事件的對象(Object)
* @param event 需要添加的事件名稱(String),不加“on”
* @param handler 需要添加的方法引用(Function)
*/
addEvent : function(element, event, handler) {
if(element.attachEvent) {
element.attachEvent('on' + event, handler);
} else if (element.addEventListener) {
element.addEventListener(event, handler, false);
} else {
element['on' + event] = handler;
}
},
/**
* 添加事件處理程序時,只能添加一個方法的引用,并不能給
* 方法加上參數(shù)。比如定義了 clickEvent(str) 這個方法,現(xiàn)
* 在要將其作為 obj 的 onclick 的事件處理程序,就可以用:
* obj.onclick = Event.getFuntion(null, clickEvent, str);
*/
getFunction : function(obj, fun) {
var args = [];
obj = obj || window;
for(var i = 2; i < arguments.length; i++) {
args.push(arguments[i]);
}
return function() {
fun.apply(obj, args);
};
}
}
/**
* 聯(lián)動處理類
*
* @param first 第一個 select 的 ID
* @param second 第二個 select 的 ID
* @param dataSet 第二個 select 的數(shù)據(jù)
*
* @author bao110908
*/
var Linkage = function(first, second) {
this.first = $(first);
this.second = $(second);
}
/**
* 初始化第一個 select 的數(shù)據(jù)
*/
Linkage.initFirst = function(first, dataSet) {
var base = $(first);
base.options.length = 1;
for(var k in dataSet) {
var opt = new Option(dataSet[k], k);
base.options[base.options.length] = opt;
}
}
Linkage.prototype = {
// 初始化
init : function() {
this.addOnChange();
},
// 為第一個 select 添加 onchange 事件
addOnChange : function() {
Event.addEvent(this.first, 'change', Event.getFunction(this, this._onChangeEvent));
},
// onchange 事件處理
_onChangeEvent : function() {
this._defaultSelect();
var data = this._getData(this.first.value);
if(!data) {
return;
}
this.second.options.length = 1;
for(var k in data) {
var opt = new Option(data[k], k);
this.second.options[this.second.options.length] = opt;
}
},
// 獲取數(shù)據(jù),如果采用 Ajax 方式,需要進(jìn)行更改
// Ajax 應(yīng)返回 { '101' : {'101' : 'a101', '102', 'a102' }} 這樣的數(shù)據(jù)格式
// 然后再使用 eval('(' + ajaxData + ')'); 轉(zhuǎn)為 JSON 對象
_getData : function(value) {
return data2[value];
},
// 重新選擇時的處理
_defaultSelect : function() {
this.second.selectedIndex = 0;
this.second.options.length = 1;
if(this.second.fireEvent) {
// IE
this.second.fireEvent('onchange');
} else {
// DOM 2
var event = document.createEvent('HTMLEvents');
event.initEvent('change', false, true);
this.second.dispatchEvent(event);
}
}
}
window.onload = function() {
Linkage.initFirst('base1', data);
var one = new Linkage('base1', 'base2');
one.init();
var two = new Linkage('base2', 'base3');
two.init();
}
</script>
<style type="text/css">
* {
font-size: 12px;
font-family: "courier new";
}
select {
width: 120px;
}
</style>
<body>
一級:<select name="base1" id="base1"><option value="0">-- 請選擇 --</option></select>
 
二級:<select name="base2" id="base2"><option value="0">-- 請選擇 --</option></select>
 
三級:<select name="base3" id="base3"><option value="0">-- 請選擇 --</option></select>
</body>
</html>

Js代碼
復(fù)制代碼 代碼如下:
var one = new Linkage('base1', 'base2', data2);
one.init();
var two = new Linkage('base2', 'base3', data3);
two.init();
//每增加一級聯(lián)動,就要 new 一下就可以了

JavaScript技術(shù)JavaScript 聯(lián)動的無限級封裝類,數(shù)據(jù)采用非Ajax方式,隨意添加聯(lián)動,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 久久免费看少妇级毛片蜜臀 | 人妻熟妇乱又伦精品视频中文字幕 | 老熟风间由美AV在线一区二区 | 韩日午夜在线资源一区二区 | 欧美激情视频在线观看一区二区三区 | 久久久久亚洲精品影视 | 极品网红液液酱粉嫩福利照子凌酱 | 亚洲精品国产在线观看 | 亚洲综合香蕉在线视频 | 年轻夫妇韩剧中文版免费观看 | 无码中文字幕热热久久 | 99影视久久电影网久久看影院 | 久久国产精品人妻中文 | 麻豆高潮AV久久久久久久 | 6080yy亚洲久久无码 | oldgrand欧洲老妇人 | 人人舔人人爱 | 国产精品乱码一区二区三 | 精品国产人成亚洲区 | 亚欧乱亚欧乱色视频 | 果冻传媒在线观看进入窗口 | 午夜影院费试看黄 | 亚洲欧美成人综合 | 亚洲精品乱码电影在线观看 | 精品国产午夜福利在线观看蜜月 | 暖暖 免费 高清 日本 在线 | av天堂网2017avtt| 果冻传媒在线观看资源七夕 | 在教室做啊好大用力 | 国产成人精品久久一区二区三区 | 国产99久久久国产精品免费看 | yin荡体育课羞耻play双性 | 精品国产高清自在线看 | 99热精品一区 | 乱奷XXXXXHD| 亚洲AV无码专区国产乱码网站 | 国产一区在线观看免费 | 日韩AV成人无码久久精品老人 | 国产成人自产拍免费视频 | 色琪琪丁香婷婷综合久久 | 狠狠操天天操夜夜操 |