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 相关文章推荐
javascript IE中的DOM ready应用技巧
Jul 23 Javascript
jquery mobile实现拨打电话功能的几种方法
Aug 05 Javascript
jquery选择器、属性设置用法经验总结
Sep 08 Javascript
深入理解javascript中return的作用
Dec 30 Javascript
jQuery实现平滑滚动到指定锚点的方法
Mar 20 Javascript
jQuery实现有动画淡出效果的二级折叠菜单代码
Oct 17 Javascript
AngularJS 模块化详解及实例代码
Sep 14 Javascript
js实现一键复制功能
Mar 16 Javascript
Javascript ES6中数据类型Symbol的使用详解
May 02 Javascript
JS简单生成由字母数字组合随机字符串示例
May 25 Javascript
elementUI 设置input的只读或禁用的方法
Oct 30 Javascript
TS 类型兼容教程示例详解
Sep 23 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
PHP中的strtr函数使用介绍(str_replace)
2011/10/20 PHP
整理的一些实用WordPress后台MySQL操作命令
2013/01/07 PHP
正确的PHP匹配UTF-8中文的正则表达式
2015/05/13 PHP
PHP简单遍历对象示例
2016/09/28 PHP
各种效果的jquery ui(接口)介绍
2008/09/17 Javascript
判断iframe是否加载完成的完美方法
2010/01/07 Javascript
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(下:动画篇)
2010/03/24 Javascript
解析JavaScript中的标签语句
2013/06/19 Javascript
jQuery中多个元素的Hover事件解决方案
2014/06/12 Javascript
理解javascript闭包
2015/12/15 Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
2016/06/12 Javascript
原生js封装二级城市下拉列表的实现代码
2016/06/16 Javascript
javascript js 操作数组 增删改查的简单实现
2016/06/20 Javascript
微信小程序 wxapp视图容器 view详解
2016/10/31 Javascript
你真的了解BOM中的history对象吗
2017/02/13 Javascript
从零学习node.js之文件操作(三)
2017/02/21 Javascript
jq checkbox 的全选并ajax传参的实例
2017/04/01 Javascript
node.js操作mysql简单实例
2017/05/25 Javascript
在Vue中使用Compass的方法
2018/03/02 Javascript
以v-model与promise两种方式实现vue弹窗组件
2018/05/21 Javascript
微信小程序报错: thirdScriptError的错误问题
2020/06/19 Javascript
vue 使用lodash实现对象数组深拷贝操作
2020/09/10 Javascript
Vue中父子组件的值传递与方法传递
2020/09/28 Javascript
Python实现的圆形绘制(画圆)示例
2018/01/31 Python
python获取命令行输入参数列表的实例代码
2018/06/23 Python
解决使用PyCharm时无法启动控制台的问题
2019/01/19 Python
Python列表(List)知识点总结
2019/02/18 Python
linux安装python修改默认python版本方法
2019/03/31 Python
Python爬取豆瓣数据实现过程解析
2020/10/27 Python
Cult Gaia官网:美国生活方式品牌
2019/08/16 全球购物
Diesel美国网上商店:意大利牛仔时装品牌
2020/12/10 全球购物
个人应聘自我评价分享
2013/11/18 职场文书
2014年图书管理员工作总结
2014/12/01 职场文书
谁动了我的奶酪读书笔记
2015/06/30 职场文书
婚宴主持词
2015/06/30 职场文书
学校学习型党组织建设心得体会
2019/06/21 职场文书