首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IE9标准文档模式破坏JavaScript

IE9标准文档模式破坏JavaScript
EN

Stack Overflow用户
提问于 2013-12-31 13:53:48
回答 1查看 207关注 0票数 0

我已经在网页上生成了一些JS代码,可以根据闰年和月在表单的日期下拉框中计算正确的天数。不幸的是,我注意到在IE9标准文档模式下,下拉显示不显示日期号(例如1到31)。IE 10、Firefox v.25.0.1和Google v.31.0.1650.63正确显示下拉菜单中的数字。我想我有一些代码在旧的文档模式中不受支持,但似乎找不到它的位置。我希望有人能发现我的错误?我已经包括了下面的相关代码。请注意,我正在使用HTML5 !DOCTYPE运行文档。

JS函数:

代码语言:javascript
复制
<script>
    function is_leap(direction)
    {
        if(direction=="from")
            var year=document.getElementById("f_year").value;
        else if(direction=="to")
            var year=document.getElementById("t_year").value;
        var a = 2000;
        for(a;a<year;a+=4)
        {
        }

        if(a==year)
        {
      return true;
        }
  else return false;
    }

    function out_days(v,direction)
    {
        var html = "";
        for(var x=1;x<=v;x++)
  {
            html += '<option value="' + x + '">' + x + '</option>';
  }
        if(direction=="from")
  {
            var temp_day=document.getElementById("f_day").selectedIndex;
      document.getElementById("f_day").innerHTML=html;  
      document.getElementById("f_day").selectedIndex=temp_day;
  } 
  else if(direction=="to")
  {
      var temp_day=document.getElementById("t_day").selectedIndex;  
            document.getElementById("t_day").innerHTML=html;
      document.getElementById("t_day").selectedIndex=temp_day;
  } 
    }

    function chk_mon(direction)
    {
        if(direction=="from")
      var e = document.getElementById("f_month").selectedIndex;
  else if(direction=="to")
            var e = document.getElementById("t_month").selectedIndex;
        switch(e)
  { 
      case 0: case 2: case 4: case 6: case 7: case 9: case 11:
            {                   
          out_days(31,direction);
    break;
            }
      case 1:
      {
                if(is_leap(direction))
          {
        out_days(29,direction);
          }
          else out_days(28,direction);
    break;
      }
      case 3: case 5: case 8: case 10:
      {
          out_days(30,direction);
    break;
      }
      default:
      {
          out_days(31,direction);
    break;
      }
        }
    }
</script>

调用代码/函数:

代码语言:javascript
复制
<div class="field"><div class="label">From:</div><select onchange="chk_mon('from')" id="f_month" name="from_month">
<option value="1">January</option>
<option value="2">February</option>
<option value="3">March</option>
<option value="4">April</option>
<option value="5">May</option>
<option value="6">June</option>
<option value="7">July</option>
<option value="8">August</option>
<option value="9">September</option>
<option value="10">October</option>
<option value="11">November</option>
<option value="12">December</option>
</select>
<select id="f_day" name="from_day">
    <script>
        chk_mon("from");
    </script>
</select>
<select onchange="chk_mon('from')" id="f_year" name="from_year">
    <option value="2013">2013</option>
    <option value="2014">2014</option>
    <option value="2015">2015</option>
    <option value="2016">2016</option>
    <option value="2017">2017</option>
    <option value="2018">2018</option>
    <option value="2019">2019</option>
    <option value="2020">2020</option>
    <option value="2021">2021</option>
    <option value="2022">2022</option>
    <option value="2023">2023</option>
    <option value="2024">2024</option>
    <option value="2025">2025</option>
    <option value="2026">2026</option>
    <option value="2027">2027</option>
    <option value="2028">2028</option>
    <option value="2029">2029</option>
    <option value="2030">2030</option>
</select></div>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-31 14:44:07

在脚本中有一个innerHTML of SELECT元素的赋值:

代码语言:javascript
复制
 document.getElementById("f_day").innerHTML=html;  

它在IE9中不能正常工作(SELECT的bug)。更多信息,这里

这是有可能修复的小提琴:我在SPAN中封装了day SELECT,并在脚本中设置了这个SPANinnerHTML而不是SELECT

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20858441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档