要实现的就是年月日的下拉列表,当选择年,月且不为空的时候,开始填充日的下拉列表。日的下拉列表有个原始选择项目
<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>

解决方案 »

  1.   

    innerHTML  换成innerText 试试
      

  2.   


    <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>帮你修改下了,你测试看看
      

  3.   

    <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){
          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>
      

  4.   

    在后面继续叫 var opt = new Option("--",""); 
            d.options.add(opt); 这段就好了
    你拷上面的代码吧
      

  5.   


    这样不得行啊,这个“--”是需要在服务器端控制的,实现并不一定知道要用--,或者是“请选择”;能通过d.innerHTML = "",然后再得到最初d的内容然后再加上吗?
      

  6.   

    <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)
    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>
      

  7.   


    不明白你需求。如果要--,你就加--。要选择就改选择啊。什么叫在服务器端控制?你明明写的是JS啊。如果一定要在服务器判断。你CS加一个 public string checkText=“--”然后在JS
    var opt1= new Option("《%=checkText%》","---"); 
    d.options.add(opt1); 
    用吧
      

  8.   

    我的疑问是,为什么用innerHTML不行呢?日的初始化值是--,最初里面只有这一个选择项。然后程序先把日的innerHTML的值保存下来。
    d_original = d.innerHTML;然后再更改月的时候,因为各个月的天数不一样的,所以先把日的d.innerHTML=""变成空恐,然后再 d.innerHTML = d_original;然后再循环赋值天数。用innerText是可以。但是稍微有点麻烦。innerHTML在这里为什么不行呢,有大神给指点下吗?
      

  9.   

    innerHTML你在页面处插入标签内容 innerText是在页面中插入文本内容.....
    这个是具体的图片说明你也可以去看看 这篇文章http://www.cnblogs.com/zpq521/archive/2008/07/12/1241493.html
      

  10.   

    楼上的,我知道阿,就是得到包含<option></option>标签对在内的内容呢
      

  11.   


    真不明白你的要求。为啥一直纠结html,你无非就是要修改日期的下拉框而已啊。你清空了原来的,重新用
    d.options.add(opt1);  加上去就可以,你管那么多HTML做射门?
      

  12.   

    是的,每次清空options就可以了啦,例如
    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("错误");
                    }   
                });
        }
      

  13.   

    innerText可以啊,不是说不行但一是得到innerHTML更方便简洁。
    二是为什么innerHTML得不到正确的值。这就是我的疑惑。实际上最简便的方法是得到原始的option,然后直接add,但是现在是想区分一下为什么用innerHTML不行
      

  14.   


    选3次这个直观,方便 ,JS日历控件,选起来让人感到很烦是1,二是不支持JS,还怎么用?