2010-12-11 148 views
0

我有三个选择,即月份,日期和年份。为此,一年是无关紧要的。我写了一个脚本,以便在每月更改时,它会更改选择日期的值,以便如果他们选择2作为一个月,则它会将其更改为仅在二月的28天。基于另一个选择的值更改选择的值

+0

它显示的任何错误??长度属性是只读的。 – RSK 2010-12-11 10:23:13

+0

没有显示任何错误,并且错误控制台中没有任何错误。 - 长度是只读的,然后我可以把它拿出来,它不应该影响任何东西,因为我正在循环,正确吗? – 2010-12-11 10:24:54

回答

1

请在创建新选项前清除所有选项。

<script type="text/javascript"> 
    function pickdata(month){ 
     day = document.getElementById('day'); 
     len = day.options.length; 
     for(i=len-1;i>=0;i--) 
     { 
     day.remove(i); 
     } 
     switch(month){ 
      case "2": 
       max = 30; 
      break; 
      case "4": 
      case "6": 
      case "9": 
      case "11": 
       max = 31 
      break; 
      case "1": 
      case "3": 
      case "5": 
      case "7": 
      case "8": 
      case "10": 
      case "12": 
       max=32; 
      break; 
     } 
     for(i=1;i< max ; i++){ 
      var elOptNew = document.createElement('option'); 
      elOptNew.text = i; 
      elOptNew.value = i; 
      day.appendChild(elOptNew); 
     } 
    } 
</script> 

<select name="month" id="month" onchange="pickdata(this.value)"> 
+0

第一部分是如何理解的?如果他们选择二月和长度为31,它会删除1使它30? 创建新元素应该是这样的: [code] var elOptNew = document.createElement('option'); \t \t \t \t \t elOptNew.text = i; \t \t \t \t \t elOptNew.value = i; \t \t \t \t \t elSel = document.getElementById('day'); \t \t \t \t \t elSel.add(elOptNew); [/ code] – 2010-12-11 10:47:51

+0

对不起。我只是想说,首先在一天中删除所有选项,然后根据所选的月份创建新的选项。在第一个代码中错过了for循环。现在修复了它 – RSK 2010-12-11 10:54:43

+0

我试着完全删除脚本的第一部分,并删除了我的日期选择器中的所有选择选项,以查看它是否正在创建任何元素,而没有任何内容。 – 2010-12-11 11:18:16

相关问题