要实现的就是年月日的下拉列表,当选择年,月且不为空的时候,开始填充日的下拉列表。日的下拉列表有个原始选择项目
<option value="">--</option>每当更换日的列表的时候,都要加上这个--但我写的代码却无论如何都不能正确运行,请大神指点下,代码可直接复制到html页面测试。代码如下:<select id="y">
<option value="">--</option>
<option value="1987">1987</option>
<option value="1986">1986</option>
</select>
<select id="m">
<option value="">--</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">7</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>
<select id="d">
<option value="">--</option>
</select><script type="text/javascript">
function $_(a){return document.getElementById(a+"");}
function getDaysInMonth(year,month){
month = parseInt(month,10)+1;
var temp = new Date(year+"/"+month+"/0");
return temp.getDate();
}
var y = $_("y");
var m = $_("m");
var d = $_("d");d_original = d.innerHTML;//.childNodes; //d.innerHTMLalert(d_original);m.onclick = function()
{
if(y.value + "" != "" && m.value + "" != "")
{
d.innerHTML = d_original;
alert(d.innerHTML+"?");
var days = getDaysInMonth(m.vlaue,d.value);
for(i=1;i<=days;i++){
var opt = new Option(""+i+"",""+i+"");
d.options.add(opt);
}
}
else
{
d.innerHTML = d_original;
//alert(d.innerHTML+"?");
}
}
-->
</script>
<option value="">--</option>每当更换日的列表的时候,都要加上这个--但我写的代码却无论如何都不能正确运行,请大神指点下,代码可直接复制到html页面测试。代码如下:<select id="y">
<option value="">--</option>
<option value="1987">1987</option>
<option value="1986">1986</option>
</select>
<select id="m">
<option value="">--</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">7</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>
<select id="d">
<option value="">--</option>
</select><script type="text/javascript">
function $_(a){return document.getElementById(a+"");}
function getDaysInMonth(year,month){
month = parseInt(month,10)+1;
var temp = new Date(year+"/"+month+"/0");
return temp.getDate();
}
var y = $_("y");
var m = $_("m");
var d = $_("d");d_original = d.innerHTML;//.childNodes; //d.innerHTMLalert(d_original);m.onclick = function()
{
if(y.value + "" != "" && m.value + "" != "")
{
d.innerHTML = d_original;
alert(d.innerHTML+"?");
var days = getDaysInMonth(m.vlaue,d.value);
for(i=1;i<=days;i++){
var opt = new Option(""+i+"",""+i+"");
d.options.add(opt);
}
}
else
{
d.innerHTML = d_original;
//alert(d.innerHTML+"?");
}
}
-->
</script>
<select id="y">
<option value="">--</option>
<option value="1987">1987</option>
<option value="1986">1986</option>
</select>
<select id="m">
<option value="">--</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>
<select id="d">
<option value="">--</option>
</select><script type="text/javascript">
function $_(a){return document.getElementById(a+"");}
function getDaysInMonth(year,month){alert(year)
month = parseInt(month,10)+1;
var temp = new Date(year+"/"+month+"/0");
return temp.getDate();
}
var y = $_("y");
var m = $_("m");
var d = $_("d");d_original = d.innerText;//.childNodes; //d. innerTextm.onclick = function()
{
if(y.value + "" != "" && m.value + "" != "")
{
d.innerText = d_original;
//alert(m.value+"1?");
var days = getDaysInMonth(y.value,m.value);
alert(days)
for(i=1;i<=days;i++){
var opt = new Option(""+i+"",""+i+"");
d.options.add(opt);
}
}
else
{
d.innerText = d_original;
//alert(d. innerText+"?");
}
}
-->
</script>帮你修改下了,你测试看看
<option value="">--</option>
<option value="1987">1987</option>
<option value="1986">1986</option>
</select>
<select id="m">
<option value="">--</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>
<select id="d">
<option value="">--</option>
</select><script type="text/javascript">
function $_(a){return document.getElementById(a+"");}
function getDaysInMonth(year,month){
month = parseInt(month,10)+1;
var temp = new Date(year+"/"+month+"/0");
return temp.getDate();
}
var y = $_("y");
var m = $_("m");
var d = $_("d");d_original = d.innerText;//.childNodes; //d. innerTextm.onclick = function()
{
if(y.value + "" != "" && m.value + "" != "")
{
d.innerText = d_original;
//alert(m.value+"1?");
var days = getDaysInMonth(y.value,m.value);
var opt = new Option("--","");
d.options.add(opt);
for(i=1;i<=days;i++){
var opt = new Option(""+i+"",""+i+"");
d.options.add(opt);
}
}
else
{
d.innerText = d_original;
//alert(d. innerText+"?");
}
}
-->
</script>
d.options.add(opt); 这段就好了
你拷上面的代码吧
这样不得行啊,这个“--”是需要在服务器端控制的,实现并不一定知道要用--,或者是“请选择”;能通过d.innerHTML = "",然后再得到最初d的内容然后再加上吗?
<option value="">--</option>
<option value="1987">1987</option>
<option value="1986">1986</option>
</select>
<select id="m">
<option value="">--</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>
<select id="d">
<option value="">--</option>
</select><script type="text/javascript">
function $_(a){return document.getElementById(a+"");}
function getDaysInMonth(year,month){//alert(year)
month = parseInt(month,10)+1;
var temp = new Date(year+"/"+month+"/0");
return temp.getDate();
}
var y = $_("y");
var m = $_("m");
var d = $_("d");d_original = d.innerText;//.childNodes; //d. innerTextm.onclick = function()
{
if(y.value + "" != "" && m.value + "" != "")
{
d.innerText =d_original;
//alert(m.value+"1?");
var days = getDaysInMonth(y.value,m.value);
//alert(days)
var opt1= new Option("---","---");
d.options.add(opt1);
for(i=1;i<=days;i++){
var opt = new Option(""+i+"",""+i+"");
d.options.add(opt);
}
}
else
{
d.innerText = d_original;
//alert(d. innerText+"?");
}
}
-->
</script>
不明白你需求。如果要--,你就加--。要选择就改选择啊。什么叫在服务器端控制?你明明写的是JS啊。如果一定要在服务器判断。你CS加一个 public string checkText=“--”然后在JS
var opt1= new Option("《%=checkText%》","---");
d.options.add(opt1);
用吧
d_original = d.innerHTML;然后再更改月的时候,因为各个月的天数不一样的,所以先把日的d.innerHTML=""变成空恐,然后再 d.innerHTML = d_original;然后再循环赋值天数。用innerText是可以。但是稍微有点麻烦。innerHTML在这里为什么不行呢,有大神给指点下吗?
这个是具体的图片说明你也可以去看看 这篇文章http://www.cnblogs.com/zpq521/archive/2008/07/12/1241493.html
真不明白你的要求。为啥一直纠结html,你无非就是要修改日期的下拉框而已啊。你清空了原来的,重新用
d.options.add(opt1); 加上去就可以,你管那么多HTML做射门?
function getSimpSite(sampType,sampValue)
{
$.ajax({
url : "../../AjaxData/AdverCheck.ashx?action=getSampType&sampType="+sampType,
dataType:"json",
success : function(data)
{
$("#itemSite").empty();
_$("itemSite").options.add(new Option("--请选择--",""));
for(var i=1; i<data.Rows.length; i++)
{
var oOption = document.createElement("OPTION");
oOption.text = data.Rows[i][1];
oOption.value =data.Rows[i][0];
_$("itemSite").add(oOption);
}
_$("itemSite").value=sampValue;
},
error:function()
{
alert("错误");
}
});
}
二是为什么innerHTML得不到正确的值。这就是我的疑惑。实际上最简便的方法是得到原始的option,然后直接add,但是现在是想区分一下为什么用innerHTML不行
选3次这个直观,方便 ,JS日历控件,选起来让人感到很烦是1,二是不支持JS,还怎么用?