本文实例讲述了JavaScript组件开发的技巧。分享给大家供大家参考,具体如下:
使用JavaScript,按照面向对象的思想来构建组件。
现以构建一个TAB组件为例。
从功能上讲,组件包括可视部分和逻辑控制部分;从代码结构上讲,组件包括代码部分和资源部分(样式、图片等)。
组件的特点:高内聚,低耦合(不与其他代码逻辑交叉,可以继承,包含);封装性(隐藏私有方法和变量);可重用性(可反复多次使用,用来组装更复杂的应用)。
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>JS 组件</title> <style> .TabControl{ position:absolute; } .TabControl .tab-head{ height:22px;width:100%; /* border-left: solid 0px #e0e0e0;border-right: solid 0px #e0e0e0;border-top: solid 0px #e0e0e0;border-bottom: solid 1px #e0e0e0; */ position:absolute; z-index:9; } .TabControl ul{ position:absolute; top:2px; padding:0px; margin:0px; z-index:10; } .TabControl li{ list-style:none; /* 将默认的列表符号去掉 */ padding-left:10px; padding-right:10px; margin:0; float:left; border: solid 1px #e0e0e0; background-color:#ffffff; height:20px; cursor:default; } .TabControl li.selected{ border-bottom: solid 1px #ffffff;border-top: solid 1px #ff0000; z-index:10; } .TabControl li.unselected{ border-bottom: solid 1px #e0e0e0;border-top: solid 1px #e0e0e0; z-index:10; } .TabControl .pageSelected{ position:absolute; display:block; border: solid 1px #e0e0e0; width:100%;height:100%; z-index:1; top:23px; } .TabControl .pageUnSelected{ display:none; border: solid 1px #e0e0e0; width:100%;height:100%; z-index:1; top:23px; } </style> </head> <body> <script lang="javascript"> var TabControl = function(width, height){ var me = this; //TAB控件容器,头,列表 var cbody,tabHead, ul; //最后选中的TAB页 var lastSelectedPage = 0; //TAB页管理容器 var pages = []; /** * 初始化函数 * param{tabCount}, 创建tab页的个数 */ me.init = function(tabCount){ //创建TAB容器 cbody = document.createElement("DIV"); cbody.className = "TabControl"; cbody.style.width = width || "400px"; cbody.style.height = height || "300px"; //创建TAB控件头 tabHead= document.createElement("DIV"); tabHead.className = "tab-head"; cbody.appendChild(tabHead); //创建TAB头 ul = document.createElement("UL"); tabHead.appendChild(ul); //根据参数初始化TAB页,缺省创建2个TAB页 var tc = tabCount || 2; for(var i=0;i<tc;i++){ me.insertPage(i,"tabPage" + i) } //缺省选中第一页 me.selectPage(0); } /** * 插入TAB页 * param{idx},插入位置 * param{title},TAB页标题 * */ me.insertPage = function(idx,title){ if(parseInt(idx)>=0){ var li = document.createElement("LI"); li.className = "unselected"; li.innerText = title; var chd = ul.childNodes[idx]; ul.insertBefore(li); li.onclick = function(){ me.selectPage(getSelectedIndex(li)); } //创建page var page = document.createElement("DIV"); page.className = "pageUnSelected"; pages.push(page); cbody.appendChild(page); } } /* * 内部函数 * 根据选中的对象,获取对应的TAB页索引 */ function getSelectedIndex(li){ var chd = ul.childNodes; for(var i=0;i<chd.length;i++){ if(chd[i] == li){ return i; } } } /** * 选中某页 * param{idx},选中页的索引 */ me.selectPage = function(idx){ if(parseInt(idx)>=0){ var lis = ul.childNodes; alert(lastSelectedPage + ',' + idx); lis[lastSelectedPage].className = "unselected"; lis[idx].className = "selected"; /* for(var i=0;i<lis.length;i++){ if( i== idx){ lis[i].className = "selected"; } else{ alert('B:'+ i + ',' + lis[idx].innerText); lis[i].className = "unselected"; } } */ //隐藏无需显示的TAB页,显示选中的TAB页 pages[lastSelectedPage].className = "pageUnSelected"; pages[idx].className = "pageSelected"; lastSelectedPage = idx; } } //在函数尾部调用初始化函数执行初始化 me.init(); //最后返回DOM对象 return cbody; } var tabControl = new TabControl(); document.body.appendChild(tabControl); </script> </body> </html>
最终效果如图:
希望本文所述对大家JavaScript程序设计有所帮助。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
暂无“JavaScript组件开发完整示例”评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新动态
2024年11月16日
2024年11月16日
- 《怪猎荒野》PS5Pro主机版对比:B测性能都不稳定
- 黄宝欣.1992-黄宝欣金装精选2CD【HOMERUN】【WAV+CUE】
- 群星.1996-宝丽金流行爆弹精丫宝丽金】【WAV+CUE】
- 杜德伟.2005-独领风骚新歌精选辑3CD【滚石】【WAV+CUE】
- 安与骑兵《心无疆界》[低速原抓WAV+CUE]
- 柏菲唱片-群星〈胭花四乐〉2CD[原抓WAV+CUE]
- 金典女声发烧靓曲《ClassicBeautifulSound》2CD[低速原抓WAV+CUE]
- 王杰1992《封锁我一生》粤语专辑[WAV+CUE][1G]
- 群星《一人一首成名曲 (欧美篇)》6CD[WAV/MP3][7.39G]
- 东来东往2004《回到我身边·别说我的眼泪你无所谓》先之唱片[WAV+CUE][1G]
- MF唱片-《宝马[在真HD路上]》2CD[低速原抓WAV+CUE]
- 李娜《相信我》新时代[WAV+CUE]
- 2019明达发烧碟MasterSuperiorAudiophile[WAV+CUE]
- 蔡幸娟.1993-相爱容易相处难【飞碟】【WAV+CUE】
- 陆虎.2024-是否愿意成为我的全世界【Hikoon】【FLAC分轨】