请问JS如何实现这样一个时间选择联动效果
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问JS如何实现这样一个时间选择联动效果相关的知识,希望对你有一定的参考价值。
想要做一个根据 选择频度 的不同而 提供不同的时间选择范围
比如选择 年度 则 后面的时间选择为 每年1月1日
月度 则 后面的时间选择为 每年每月1日
按旬 则 后面的时间选择为 每年每月1日 11日 21日
按周 则 后面的时间选择为 每年每月每周的周五
按日 则 后面的时间选择为 每年每月每日
我现有代码已经实现了 选择 每年每月每周的周五 的功能,但是我不知道怎样将其与 前面的频度选择联动起来,请高手帮忙,谢谢了,初学JS~~
想要拿分的请联系我 给你看一下我现在的代码,然后帮忙做一下,请先在下面回答一下,然后百度HI 我,谢谢。回答的好,可写全这个功能的,可追加100分。
我再详细说一下,html页面放一个form,然后由javascript实现form内下拉框内容,然后下拉框内容的具体范围要求,在上面说的很清楚了。
如果不清楚,请看这个地址 然后运行一下里面的代码 http://bbs.blueidea.com/thread-2982286-1-1.html
怎么就剩1个答案了,其他人的呢?晕了,昨天还3个答案呢
以下是部分代码
/**//**
*tiannet添加了时间选择功能、select,object标签隐藏功能,还有其它小功能。
*使用方法:
* (1)只选择日期 <input type="text" name="date" readOnly onClick="setDay(this);">
* (2)选择日期和小时 <input type="text" name="dateh" readOnly onClick="setDayH(this);">
* (3)选择日期和小时及分钟 <input type="text" name="datehm" readOnly onClick="setDayHM(this);">
*设置参数的方法
* (1)设置日期分隔符 setDateSplit(strSplit);默认为"-"
* (2)设置日期与时间之间的分隔符 setDateTimeSplit(strSplit);默认为" "
* (3)设置时间分隔符 setTimeSplit(strSplit);默认为":"
* (4)设置(1),(2),(3)中的分隔符 setSplit(strDateSplit,strDateTimeSplit,strTimeSplit);
* (5)设置开始和结束年份 setYearPeriod(intDateBeg,intDateEnd)
*说明:
* 默认返回的日期时间格式如同:2005-02-02 08:08
*/
//------------------ 样式定义 ---------------------------//
//功能按钮同样样式
var s_tiannet_turn_base = "height:16px;font-size:9pt;color:white;border:0 solid #CCCCCC;cursor:hand;background-color:#2650A6;";
//翻年、月等的按钮
var s_tiannet_turn = "width:28px;" + s_tiannet_turn_base;
//关闭、清空等按钮样式
var s_tiannet_turn2 = "width:22px;" + s_tiannet_turn_base;
//年选择下拉框
var s_tiannet_select = "width:64px;display:none;";
//月、时、分选择下拉框
var s_tiannet_select2 = "width:46px;display:none;";
//日期选择控件体的样式
var s_tiannet_body = "width:150;background-color:#2650A6;display:none;z-index:9998;position:absolute;" +
"border-left:1 solid #CCCCCC;border-top:1 solid #CCCCCC;border-right:1 solid #999999;border-bottom:1 solid #999999;";
//显示日的td的样式
var s_tiannet_day = "width:21px;height:20px;background-color:#D8F0FC;font-size:10pt;";
//字体样式
var s_tiannet_font = "color:#FFCC00;font-size:9pt;cursor:hand;";
//链接的样式
var s_tiannet_link = "text-decoration:none;font-size:9pt;color:#2650A6;";
//横线
var s_tiannet_line = "border-bottom:1 solid #6699CC";
//------------------ 变量定义 ---------------------------//
var tiannetYearSt = 1950;//可选择的开始年份
var tiannetYearEnd = 2010;//可选择的结束年份
var tiannetDateNow = new Date();
var tiannetYear = tiannetDateNow.getFullYear(); //定义年的变量的初始值
var tiannetMonth = tiannetDateNow.getMonth()+1; //定义月的变量的初始值
var tiannetDay = tiannetDateNow.getDate();
var tiannetHour = 8;//tiannetDateNow.getHours();
var tiannetMinute = 0;//tiannetDateNow.getMinutes();
var tiannetArrDay=new Array(42); //定义写日期的数组
var tiannetDateSplit = "-"; //日期的分隔符号
var tiannetDateTimeSplit = " "; //日期与时间之间的分隔符
var tiannetTimeSplit = ":"; //时间的分隔符号
var tiannetOutObject; //接收日期时间的对象
var arrTiannetHide = new Array();//被强制隐藏的标签
var m_bolShowHour = false;//是否显示小时
var m_bolShowMinute = false;//是否显示分钟
var m_aMonHead = new Array(12); //定义阳历中每个月的最大天数
m_aMonHead[0] = 31; m_aMonHead[1] = 28; m_aMonHead[2] = 31; m_aMonHead[3] = 30; m_aMonHead[4] = 31; m_aMonHead[5] = 30;
m_aMonHead[6] = 31; m_aMonHead[7] = 31; m_aMonHead[8] = 30; m_aMonHead[9] = 31; m_aMonHead[10] = 30; m_aMonHead[11] = 31;
// ---------------------- 用户可调用的函数 -----------------------------//
//用户主调函数-只选择日期
function setDay(obj)
tiannetOutObject = obj;
//如果标签中有值,则将日期初始化为当前值
var strValue = tiannetTrim(tiannetOutObject.value);
if( strValue != "" )
tiannetInitDate(strValue);
tiannetPopCalendar();
//用户主调函数-选择日期和小时
function setDayH(obj)
tiannetOutObject = obj;
m_bolShowHour = true;
//如果标签中有值,则将日期和小时初始化为当前值
var strValue = tiannetTrim(tiannetOutObject.value);
if( strValue != "" )
tiannetInitDate(strValue.substring(0,10));
var hour = strValue.substring(11,13);
if( hour < 10 ) tiannetHour = hour.substring(1,2);
tiannetPopCalendar();
//用户主调函数-选择日期和小时及分钟
function setDayHM(obj)
tiannetOutObject = obj;
m_bolShowHour = true;
m_bolShowMinute = true;
//如果标签中有值,则将日期和小时及分钟初始化为当前值
var strValue = tiannetTrim(tiannetOutObject.value);
if( strValue != "" )
tiannetInitDate(strValue.substring(0,10));
var time = strValue.substring(11,16);
var arr = time.split(tiannetTimeSplit);
tiannetHour = arr[0];
tiannetMinute = arr[1];
if( tiannetHour < 10 ) tiannetHour = tiannetHour.substring(1,2);
if( tiannetMinute < 10 ) tiannetMinute = tiannetMinute.substring(1,2);
tiannetPopCalendar();
//设置开始日期和结束日期
function setYearPeriod(intDateBeg,intDateEnd)
tiannetYearSt = intDateBeg;
tiannetYearEnd = intDateEnd;
//设置日期分隔符。默认为"-"
function setDateSplit(strDateSplit)
tiannetDateSplit = strDateSplit;
//设置日期与时间之间的分隔符。默认为" "
function setDateTimeSplit(strDateTimeSplit)
tiannetDateTimeSplit = strDateTimeSplit;
//设置时间分隔符。默认为":"
function setTimeSplit(strTimeSplit)
tiannetTimeSplit = strTimeSplit;
//设置分隔符
function setSplit(strDateSplit,strDateTimeSplit,strTimeSplit)
tiannetDateSplit(strDateSplit);
tiannetDateTimeSplit(strDateTimeSplit);
tiannetTimeSplit(strTimeSplit);
//设置默认的日期。格式为:YYYY-MM-DD
function setDefaultDate(strDate)
tiannetYear = strDate.substring(0,4);
tiannetMonth = strDate.substring(5,7);
tiannetDay = strDate.substring(8,10);
//设置默认的时间。格式为:HH24:MI 参考技术A 说的不是很清楚,是用JS手动添加数据,然后实现联动,还是从数据库内取出数据后再实现联动呢 。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<script language="javascript">
function chooseTypeHandler()
var typeV=document.getElementById("chooseType").value;
switch (typeV)
case "1":
chooseYearHandler();
break;
case "2":
chooseMonthHandler();
break;
case "3":
chooseTendaysHandler();
break;
case "4":
case "5":
chooseWeekHandler();
function chooseYearHandler()
var monthObj=document.getElementById("month");
var monthOps= monthObj.options;
monthOps.length=0;
var op1=document.createElement("option");
op1.value="1";
op1.text="1";
monthOps[0]=op1;
var dayObj=document.getElementById("day");
var dayOps= dayObj.options;
dayOps.length=0;
var op2=document.createElement("option");
op2.value="1";
op2.text="1";
dayOps[0]=op2;
function chooseMonthHandler()
var monthObj=document.getElementById("month");
var monthOps= monthObj.options;
monthOps.length=0;
for(var i=1;i<13;i++)
var op1=document.createElement("option");
op1.value=""+i;
op1.text=""+i;
monthOps[i-1]=op1;
var dayObj=document.getElementById("day");
var dayOps= dayObj.options;
dayOps.length=0;
var op2=document.createElement("option");
op2.value="1";
op2.text="1";
dayOps[0]=op2;
function chooseTendaysHandler()
var monthObj=document.getElementById("month");
var monthOps= monthObj.options;
monthOps.length=0;
for(var i=1;i<13;i++)
var op1=document.createElement("option");
op1.value=""+i;
op1.text=""+i;
monthOps[i-1]=op1;
var dayObj=document.getElementById("day");
var dayOps= dayObj.options;
dayOps.length=0;
for(var i=1;i<4;i++)
var op1=document.createElement("option");
op1.value=""+((i-1)*10+1);
op1.text=""+((i-1)*10+1);
dayOps[i-1]=op1;
function chooseWeekHandler()
var monthObj=document.getElementById("month");
var monthOps= monthObj.options;
monthOps.length=0;
for(var i=1;i<13;i++)
var op1=document.createElement("option");
op1.value=""+i;
op1.text=""+i;
monthOps[i-1]=op1;
chooseyearormonthHandler();
function chooseDayHandler()
var monthObj=document.getElementById("month");
var monthOps= monthObj.options;
monthOps.length=0;
for(var i=1;i<13;i++)
var op1=document.createElement("option");
op1.value=""+i;
op1.text=""+i;
monthOps[i-1]=op1;
chooseyearormonthHandler();
function chooseyearormonthHandler()
var typeV=document.getElementById("chooseType").value;
if(typeV!="4"&&typeV!="5")return;
if(document.getElementById("chooseType").value=="5")
chooseDayHandler();
return;
var monthObj=document.getElementById("month");
var yearV=document.getElementById("year").value;
var monthV=monthObj.value;
var tmpDate=new Date(yearV,parseInt(monthV)-1,1);
var dayObj=document.getElementById("day");
var dayOps= dayObj.options;
dayOps.length=0;
var dayarray=new Array();
var daynum=tmpDate.getDay();
if(daynum==0)
dayarray.push(6);
else if(daynum<6)
dayarray.push(6-daynum);
else
dayarray.push(7);
var monthDayCount=new Date(yearV,parseInt(monthV),0).getDate();
for(var i=dayarray[0]+7;i<=monthDayCount;i=i+7)
dayarray.push(i);
for(var i=0;i<dayarray.length;i++)
var op1=document.createElement("option");
op1.value=""+(dayarray[i]);
op1.text=""+(dayarray[i]);
dayOps[i]=op1;
function chooseDayHandler()
var yearV=document.getElementById("year").value;
var monthObj=document.getElementById("month");
var monthV=monthObj.value;
var monthDayCount=new Date(yearV,parseInt(monthV),0).getDate();
var dayObj=document.getElementById("day");
var dayOps= dayObj.options;
dayOps.length=0;
for(var i=1;i<=monthDayCount;i++)
var op1=document.createElement("option");
op1.value=""+i;
op1.text=""+i;
dayOps[i-1]=op1;
</script>
</HEAD>
<BODY onload="chooseTypeHandler()">
<form action="" method="post">
<select id="chooseType" name="chooseType" onChange="chooseTypeHandler();">
<option value="1">年</option>
<option value="2">月</option>
<option value="3">旬</option>
<option value="4">周</option>
<option value="5">日</option>
</select>
<select id="year" name="year" onchange="chooseyearormonthHandler();">
<option value="2008">2008</option>
<option value="2009">2009</option>
<option value="2010">2010</option>
<option value="2011">2011</option>
</select>
<select id="month" name="month" onchange="chooseyearormonthHandler();">
</select>
<select id="day" name="day">
</select>
</form>
</BODY>
</HTML>
使用Javascript来实现二级联动菜单的效果
效果图如下:
具体实现步骤如下:
1.所用js代码如下:
<script type="text/javascript"> var arr_province=["请选择省份/城市","北京市","上海市","天津市","河南省","山东省","河北省"]; var arr_city=[ ["请选择城市/地区"], ["中关村","海淀区","朝阳区","昌平区","丰台区","大兴区"], ["宝坻区","浦东新区","长宁区","徐汇区","虹口区","宝山区"], ["和平区","河东区","河西区","塘沽区","大港区","北辰区"], ["郑州市","洛阳市","商丘市","开封市","安阳市","濮阳市"], ["济南市","青岛市","烟台市","德州市"], ["石家庄","菏泽市","唐山市"], ]; function init() { var province=document.form1.province; province.style.width=150+"px"; var city=document.form1.city; city.style.width=150+"px"; //给province赋值高度,才能在其里面写入内容 province.length=arr_province.length; for(var i=0;i<arr_province.length;i++) { province.options[i].text=arr_province[i]; province.options[i].value=arr_province[i]; } //设置默认被选中的选项 var index=0; province.selectedIndex=index; //给city赋值高度,才能在其里面写入内容 city.length=arr_city[index].length; for(var j=0;j<arr_city[index].length;j++) { city.options[j].text=arr_city[index][j]; city.options[j].value=arr_city[index][j]; } } function select_change(num) { var city=document.form1.city; city.length=0; city.length=arr_city[num].length; for(var i=0; i<arr_city[num].length;i++) { city.options[i].text=arr_city[num][i]; city.options[i].value=arr_city[num][i]; } } </script>
2.body中的代码如下:
<body onload="init()"> <form name="form1"> 所在地区:<select name="province" onchange="select_change(this.selectedIndex)"></select> 城市:<select name="city"></select> </form> </body>
1.利用javascript来实现鼠标经过图片放大,鼠标移出图片恢复的效果,具体代码如下:
<script type="text/javascript"> function init() { var img0=document.getElementById("img0"); img0.onmouseover=function() { img0.style.width=img0.offsetWidth*1.5+"px" } img0.onmouseout=function() { img0.style.width=img0.offsetWidth/1.5+"px" } } </script>
2.body中的代码如下:
<body onload="init()"> <img id="img0" src="images/4.jpg" /> </body>
以上是关于请问JS如何实现这样一个时间选择联动效果的主要内容,如果未能解决你的问题,请参考以下文章
请问用啥方式可以实现省市级联的效果呀 省市的数据是从数据库中查出来的