请问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如何实现这样一个时间选择联动效果的主要内容,如果未能解决你的问题,请参考以下文章

请问用啥方式可以实现省市级联的效果呀 省市的数据是从数据库中查出来的

请问跑马灯效果如何实现两行文字轮流从右向左跑? 一行跑完了,另一行再开始跑,这样循环

Excel 如何实现五级下拉菜单联动

PHP开发中基于layUI的三级联动效果如何实现

js之select三级联动

纯JS实现中国行政区域上下联动选择地址