JS实现类似51job上的地区选择效果示例


Posted in Javascript onNovember 17, 2016

本文实例讲述了JS实现类似51job上的地区选择效果。分享给大家供大家参考,具体如下:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>地区选择效果</title></head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
BODY {
FONT-SIZE: 12px; PADDING-TOP: 50px
}
H2 {
PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; FONT-SIZE: 12px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px
}
.bton {
BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; BACKGROUND: #ddd; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid
}
.cont {
PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; PADDING-TOP: 10px
}
#main {
MARGIN: 0px auto; WIDTH: 400px
}
#selectItem {
BORDER-RIGHT: #000 1px solid; BORDER-TOP: #000 1px solid; MARGIN-TOP: 10px; Z-INDEX: 2; BACKGROUND: #fff; OVERFLOW: hidden; BORDER-LEFT: #000 1px solid; WIDTH: 400px; BORDER-BOTTOM: #000 1px solid; POSITION: absolute; TOP: 0px
}
#preview {
BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; MARGIN: 1px; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid
}
#result {
BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; MARGIN-TOP: 10px; BORDER-LEFT: #ccc 1px solid; BORDER-BOTTOM: #ccc 1px solid
}
.tit {
PADDING-LEFT: 10px; MARGIN: 1px; LINE-HEIGHT: 20px; HEIGHT: 20px
}
.bgc_ccc {
BACKGROUND: #ccc
}
.bgc_eee {
BACKGROUND: #eee
}
.c_999 {
COLOR: #999
}
.pointer {
CURSOR: pointer
}
.left {
FLOAT: left
}
.right {
FLOAT: right
}
.cls {
CLEAR: both; FONT-SIZE: 0px; OVERFLOW: hidden; HEIGHT: 0px
}
#bg {
DISPLAY: none; Z-INDEX: 1; BACKGROUND: #ccc; FILTER: alpha(opacity=70); LEFT: 0px; WIDTH: 100%; POSITION: absolute; TOP: 0px; opacity: 0.7
}
.hidden {
DISPLAY: none
}
.move {
CURSOR: move
}
</style>
<meta content="MSHTML 6.00.2900.3314" name="GENERATOR" />
<div id="main"><input pointer" onclick="openBg(1);openSelect(1)" type="button" name="button" value="请选择" />
<div id="result">
<div bgc_eee">
<h2>您已选择的城市汇总</h2>
</div>
<div id="makeSureItem"></div>
</div>
</div>
<div id="bg"></div>
<div id="selectItem">
<div bgc_ccc move" onmousedown="drag(event,this)">
<h2 right" onclick="openBg(0);openSelect(0);">[取消]</span> <span right" onclick="makeSure();">[确定]</span> </div>
<div id="selectSub"><select style="MARGIN-BOTTOM: 10px" onchange="showSelect(this.value)" name="">
<option value="0" selected="selected">第0层</option>
<option value="1">第1层</option>
<option value="2">第2层</option>
<option value="3">第3层</option>
</select>
<div id="c00"><input onclick="addPreItem()" type="checkbox" name="ck00" value="北京" />北京 <input onclick="addPreItem()" type="checkbox" name="ck00" value="福建" />福建 <input onclick="addPreItem()" type="checkbox" name="ck00" value="四川" />四川 <input onclick="addPreItem()" type="checkbox" name="ck00" value="江苏" />江苏 </div>
<div id="c01"><input onclick="addPreItem()" type="checkbox" name="ck01" value="上海" />上海 <input onclick="addPreItem()" type="checkbox" name="ck01" value="云南" />云南 <input onclick="addPreItem()" type="checkbox" name="ck01" value="贵州" />贵州 </div>
<div id="c02"><input onclick="addPreItem()" type="checkbox" name="ck01" value="黑龙江" />黑龙江 <input onclick="addPreItem()" type="checkbox" name="ck01" value="吉林" />吉林 <input onclick="addPreItem()" type="checkbox" name="ck01" value="辽宁" />辽宁 </div>
<div id="c03"><input onclick="addPreItem()" type="checkbox" name="ck01" value="美国" />美国 <input onclick="addPreItem()" type="checkbox" name="ck01" value="阿富汗" />阿富汗 <input onclick="addPreItem()" type="checkbox" name="ck01" value="日本" />日本 </div>
</div>
</div>
<div id="preview">
<div bgc_eee c_999">
<h2>您已选择的城市</h2>
</div>
<div id="previewItem"></div>
</div>
</div>
<SCRIPT type=text/javascript>
/* ------使用说明----- */
/*
添加城市方法:
  添加组:找到id 是 "selectSub"中select标签下,添加option标签 value属性递增,找到 id 是 "selectSub",按照原有格式添加div,其id属性递增
添加二级傅选矿选项
复制 id 是 "selectSub" 下任意input标签,粘贴在需要添加的位置。
*/
var grow = $("selectSub").getElementsByTagName("option").length; //组数
var showGrow = 0;//已打开组
var selectCount = 0; //已选数量 
showSelect(showGrow);
var items = $("selectSub").getElementsByTagName("input");
//alert(maxItem);
//var lenMax = 2; 
//alert(1);
function $(o){ //获取对象
if(typeof(o) == "string")
return document.getElementById(o);
return o;
}
function openBg(state){ //遮照打开关闭控制
if(state == 1)
{
$("bg").style.display = "block";
var h = document.body.offsetHeight > document.documentElement.offsetHeight ? document.body.offsetHeight : document.documentElement.offsetHeight;
//alert(document.body.offsetHeight);
//alert(document.documentElement.offsetHeight);
$("bg").style.height = h + "px";
}
else
{
$("bg").style.display = "none";
}
}
function openSelect(state){ //选择城市层关闭打开控制
if(state == 1)
{
$("selectItem").style.display = "block";
$("selectItem").style.left = ($("bg").offsetWidth - $("selectItem").offsetWidth)/2 + "px";
$("selectItem").style.top = document.body.scrollTop + 100 + "px";
}
else
{
$("selectItem").style.display = "none";
}
}
function showSelect(id){
for(var i = 0 ; i < grow ;i++)
{
$("c0" + i).style.display = "none";
}
$("c0" + id).style.display = "block";
showGrow = id;
}
function open(id,state){ //显示隐藏控制
if(state == 1)
$(id).style.display = "block";
$(id).style.diaplay = "none";
}
function addPreItem(){
$("previewItem").innerHTML = "";
var len = 0 ;
for(var i = 0 ; i < items.length ; i++)
{
if(items[i].checked == true)
{
//len++;
//if(len > lenMax)
//{
//alert("不能超过" + lenMax +"个选项!")
//return false;
//}
var mes = "<input type='checkbox' checked='true' value='"+ items[i].value +"' onclick='copyItem(\"previewItem\",\"previewItem\");same(this);'>" + items[i].value;
$("previewItem").innerHTML += mes;
//alert(items[i].value);
}
}
}
function makeSure(){
//alert(1);
//$("makeSureItem").innerHTML = $("previewItem").innerHTML;
openBg(0);
openSelect(0);
copyItem("previewItem","makeSureItem")
}
function copyHTML(id1,id2){
$(id2).innerHTML = $("id1").innerHTML;
}
function copyItem(id1,id2){
var mes = "";
var items2 = $(id1).getElementsByTagName("input");
for(var i = 0 ; i < items2.length ; i++)
{
if(items2[i].checked == true)
{
mes += "<input type='checkbox' checked='true' value='"+ items2[i].value +"' onclick='copyItem(\"" + id2+ "\",\""+ id1 +"\");same(this);'>" + items2[i].value;
}
}
$(id2).innerHTML = "";
$(id2).innerHTML += mes;
//alert($(id2).innerHTML);
}
function same(ck){
for(var i = 0 ; i < items.length ; i++)
{
if(ck.value == items[i].value)
{
items[i].checked = ck.checked;
}
}
}
/* 鼠标拖动 */
var oDrag = "";
var ox,oy,nx,ny,dy,dx;
function drag(e,o){
var e = e ? e : event;
var mouseD = document.all ? 1 : 0;
if(e.button == mouseD)
{
oDrag = o.parentNode;
//alert(oDrag.id);
ox = e.clientX;
oy = e.clientY;
}
}
function dragPro(e){
if(oDrag != "")
{
var e = e ? e : event;
//$(oDrag).style.left = $(oDrag).offsetLeft + "px";
//$(oDrag).style.top = $(oDrag).offsetTop + "px";
dx = parseInt($(oDrag).style.left);
dy = parseInt($(oDrag).style.top);
//dx = $(oDrag).offsetLeft;
//dy = $(oDrag).offsetTop;
nx = e.clientX;
ny = e.clientY;
$(oDrag).style.left = (dx + ( nx - ox )) + "px";
$(oDrag).style.top = (dy + ( ny - oy )) + "px";
ox = nx;
oy = ny;
}
}
document.onmouseup = function(){oDrag = "";}
document.onmousemove = function(event){dragPro(event);}
</SCRIPT>

运行效果图如下:

JS实现类似51job上的地区选择效果示例

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
Raphael带文本标签可拖动的图形实现代码
Feb 20 Javascript
如何用js 实现依赖注入的思想,后端框架思想搬到前端来
Aug 03 Javascript
js实现当鼠标移到表格上时显示这一格全部内容的代码
Jun 12 Javascript
JS事件添加和移出的兼容写法示例
Jun 20 Javascript
自动化测试读写64位操作系统的注册表
Aug 15 Javascript
AngularJS中一般函数参数传递用法分析
Nov 22 Javascript
浅谈webpack对样式的处理
Jan 05 Javascript
Vue实现美团app的影院推荐选座功能【推荐】
Aug 29 Javascript
Vue项目报错:Uncaught SyntaxError: Unexpected token
Nov 10 Javascript
详解关于React-Router4.0跳转不置顶解决方案
May 10 Javascript
代码解析React中setState同步和异步问题
Jun 03 Javascript
javascript数组includes、reduce的基本使用
Jul 02 Javascript
JS实现的适合做faq或menu滑动效果示例
Nov 17 #Javascript
JavaScript中定时控制Throttle、Debounce和Immediate详解
Nov 17 #Javascript
JS动态的把左边列表添加到右边的实现代码(可上下移动)
Nov 17 #Javascript
leaflet的开发入门教程
Nov 17 #Javascript
JavaScript中关于iframe滚动条的去除和保留
Nov 17 #Javascript
JS实现倒计时(天数、时、分、秒)
Nov 16 #Javascript
探讨AngularJs中ui.route的简单应用
Nov 16 #Javascript
You might like
谈一谈收音机的高放电路
2021/03/02 无线电
mac下使用brew配置环境的步骤分享
2011/05/23 PHP
PHP开发框架laravel安装与配置教程
2015/03/13 PHP
PHP判断字符串长度的两种方法很实用
2015/09/22 PHP
PHP调试的强悍利器之PHPDBG
2016/02/22 PHP
JavaScript 设计模式之组合模式解析
2010/04/09 Javascript
Javascript 面向对象 命名空间
2010/05/13 Javascript
Javascript实现真实字符串剩余字数提示的实例代码
2013/10/22 Javascript
Knockout数组(observable)使用详解示例
2013/11/15 Javascript
jquery超简单实现手风琴效果的方法
2015/06/05 Javascript
浅谈Javascript数组索引
2015/07/29 Javascript
深入解读JavaScript中的Hoisting机制
2015/08/12 Javascript
jQuery+CSS实现简单切换菜单示例
2016/07/27 Javascript
JS回调函数简单用法示例
2017/02/09 Javascript
jQuery自定义多选下拉框效果
2017/06/19 jQuery
AngularJS中重新加载当前路由页面的方法
2018/03/09 Javascript
vue拖拽组件使用方法详解
2018/12/01 Javascript
详解Bootstrap 学习(一)入门
2019/04/12 Javascript
vue安装遇到的5个报错及解决方法
2019/06/12 Javascript
angular8和ngrx8结合使用的步骤介绍
2019/12/01 Javascript
pycharm 配置远程解释器的方法
2018/10/28 Python
Python流行ORM框架sqlalchemy安装与使用教程
2019/06/04 Python
Python实现的统计文章单词次数功能示例
2019/07/08 Python
pycharm激活码快速激活及使用步骤
2020/03/12 Python
CSS3用@font-face实现自定义英文字体
2013/09/23 HTML / CSS
html5菜单折纸效果
2014/04/22 HTML / CSS
意大利在线眼镜精品店:Ottica Lipari
2019/11/11 全球购物
英国家具、照明、家居用品网上商店:Wayfair.co.uk
2020/02/13 全球购物
家长给学校的建议书
2014/05/15 职场文书
新学期红领巾广播稿
2014/10/04 职场文书
打架检讨书范文
2015/01/27 职场文书
无保留意见审计报告
2015/06/05 职场文书
2016年中学清明节活动总结
2016/04/01 职场文书
pytorch DataLoader的num_workers参数与设置大小详解
2021/05/28 Python
Springboot集成阿里云OSS上传文件系统教程
2021/06/28 Java/Android
Golang gRPC HTTP协议转换示例
2022/06/16 Golang