首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

关于在JSP中嵌套javascript的有关问题

2012-03-13 
关于在JSP中嵌套javascript的问题我在写JSP代码中要嵌入两个用javasript写的日期控件,单独的执行这个javas

关于在JSP中嵌套javascript的问题
我在写JSP代码中要嵌入两个用javasript写的日期控件,单独的执行这个javasript写的代码可以生成三个下拉列表的日期框,但是放在JSP中的一个表格后,下拉列表就不能实现了,下面是代码,大家可以试试。
<%@page   pageEncoding= "GBK "   contentType= "text/html;   charset=GBK "   %>
<html>
<head>
<meta   http-equiv= "Content-Type "   content= "text/html;   charset=GBK "/>
<title> sdsdfsdf </title>
</head>
<body>
<form   name=form1>
<select   name=YYYY   onchange= "YYYYDD(this.value) ">
<option   value= " "> 请选择   年 </option>
</select>
<select   name=MM   onchange= "MMDD(this.value) ">
<option   value= " "> 选择   月 </option>
</select>
<select   name=DD>
<option   value= " "> 选择   日 </option>
</select>
</form>

<script   language= "JavaScript ">
function   YYYYMMDDstart()
{
MonHead   =   [31,   28,   31,   30,   31,   30,   31,   31,   30,   31,   30,   31];

//先给年下拉框赋内容
var   y   =   new   Date().getFullYear();
for   (var   i   =   (y-30);   i   <   (y+30);   i++)   //以今年为准,前30年,后30年
document.form1.YYYY.options.add(new   Option( "   "+   i   + "   年 ",   i));

//赋月份的下拉框
for   (var   i   =   1;   i   <   13;   i++)
document.form1.MM.options.add(new   Option( "   "   +   i   +   "   月 ",   i));

document.form1.YYYY.value   =   y;
document.form1.MM.value   =   new   Date().getMonth()   +   1;
var   n   =   MonHead[new   Date().getMonth()];
if   (new   Date().getMonth()   ==1   &&   IsPinYear(YYYYvalue))   n++;
writeDay(n);   //赋日期下拉框Author:meizz
document.form1.DD.value   =   new   Date().getDate();
}
if(document.attachEvent)
window.attachEvent( "onload ",   YYYYMMDDstart);
else
window.addEventListener( 'load ',   YYYYMMDDstart,   false);
function   YYYYDD(str)   //年发生变化时日期发生变化(主要是判断闰平年)
{
var   MMvalue   =   document.form1.MM.options[document.form1.MM.selectedIndex].value;
if   (MMvalue   ==   " "){   var   e   =   document.form1.DD;   optionsClear(e);   return;}
var   n   =   MonHead[MMvalue   -   1];
if   (MMvalue   ==2   &&   IsPinYear(str))   n++;
writeDay(n)
}
function   MMDD(str)   //月发生变化时日期联动
{
var   YYYYvalue   =   document.form1.YYYY.options[document.form1.YYYY.selectedIndex].value;
if   (YYYYvalue   ==   " "){   var   e   =   document.form1.DD;   optionsClear(e);   return;}
var   n   =   MonHead[str   -   1];
if   (str   ==2   &&   IsPinYear(YYYYvalue))   n++;
writeDay(n)
}
function   writeDay(n)   //据条件写日期的下拉框
{
var   e   =   document.form1.DD;   optionsClear(e);
for   (var   i=1;   i <(n+1);   i++)
e.options.add(new   Option( "   "+   i   +   "   日 ",   i));


}
function   IsPinYear(year)//判断是否闰平年
{   return(0   ==   year%4   &&   (year%100   !=0   ||   year%400   ==   0));}
function   optionsClear(e)
{
e.options.length   =   1;
}
</script>
</body>
</html>



[解决办法]
估计是你的JSP页面中有元素和这个日期控件中的元素同名,最有可以的就是form1
你可以试一下不放在表格里,就放在你那个JSP页面的最开头试试,这个和表格不表格是没有关系的
[解决办法]
方法名 你看看错了吗?

[解决办法]
楼主我的很正常呢?
<%@page contentType= "text/html; charset=gb2312 " language= "java " import= "java.sql.* " errorPage= " "%>
<html>
<head>
<title> sdsdfsdf </title>
</head>
<body>
<form name=form1 action= " ">
<table align= "center ">
<tr>
<td>
<select name=YYYY onchange= "YYYYDD(this.value) ">
<option value= " "> 请选择 年 </option>
</select>
<select name=MM onchange= "MMDD(this.value) ">
<option value= " "> 选择 月 </option>
</select>
<select name=DD>
<option value= " "> 选择 日 </option>
</select>
</td>
</tr>
</table>
</form>
<script language= "JavaScript " type= " ">
function YYYYMMDDstart()
{
MonHead = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

//先给年下拉框赋内容
var y = new Date().getFullYear();
for (var i = (y-30); i < (y+30); i++) //以今年为准,前30年,后30年
document.form1.YYYY.options.add(new Option( " "+ i + " 年 ", i));

//赋月份的下拉框
for (var i = 1; i < 13; i++)
document.form1.MM.options.add(new Option( " " + i + " 月 ", i));

document.form1.YYYY.value = y;
document.form1.MM.value = new Date().getMonth() + 1;
var n = MonHead[new Date().getMonth()];
if (new Date().getMonth() ==1 && IsPinYear(YYYYvalue)) n++;
writeDay(n); //赋日期下拉框Author:meizz
document.form1.DD.value = new Date().getDate();
}
if(document.attachEvent)
window.attachEvent( "onload ", YYYYMMDDstart);
else
window.addEventListener( 'load ', YYYYMMDDstart, false);
function YYYYDD(str) //年发生变化时日期发生变化(主要是判断闰平年)
{
var MMvalue = document.form1.MM.options[document.form1.MM.selectedIndex].value;
if (MMvalue == " "){ var e = document.form1.DD; optionsClear(e); return;}
var n = MonHead[MMvalue - 1];
if (MMvalue ==2 && IsPinYear(str)) n++;
writeDay(n)
}
function MMDD(str) //月发生变化时日期联动
{
var YYYYvalue = document.form1.YYYY.options[document.form1.YYYY.selectedIndex].value;
if (YYYYvalue == " "){ var e = document.form1.DD; optionsClear(e); return;}
var n = MonHead[str - 1];
if (str ==2 && IsPinYear(YYYYvalue)) n++;
writeDay(n)
}
function writeDay(n) //据条件写日期的下拉框
{
var e = document.form1.DD; optionsClear(e);
for (var i=1; i <(n+1); i++)
e.options.add(new Option( " "+ i + " 日 ", i));
}
function IsPinYear(year)//判断是否闰平年
{ return(0 == year%4 && (year%100 !=0 || year%400 == 0));}
function optionsClear(e)
{
e.options.length = 1;


}
</script>
</body>
</html>

热点排行