html-select <option selected=""> doesn't

html-select <option selected=""> doesn't work

本文关键字:quot gt doesn selected lt option html-select      更新时间:2023-09-26

我有3个html的<select>年,月,日。年份和月份均自动设置为当前年份和当前月份。我完全是在PHP中做的。然而,这是由Javascript触发的一天似乎不工作,即使我已经做了

if (j == <?php echo date('d') ?>)  days_select.options[days_select.options.length] = new Option(j, j, true);

默认的日期仍然是1,而不是当前日期。更令人沮丧的是,当我在firebug上查看时,选择的日期是当前日期…我在编程方面完全是个新手,这就是为什么像这样简单的事情对我来说有点难以掌握。请帮助…

date_select.php

<body onload="loadDays();">
 <script type="text/javascript" >
  function loadDays() {
   var year = parseInt(document.getElementById('years').value);
   var month = document.getElementById('months').value;
   var months = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
   var days = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
   if ((year % 4) == 0)  days[1] = 29;
   var days_select = document.getElementById('days');
   days_select.options.length = 0;
   for(i in months) {
    if (month == months[i]) {
     for(var j = 1; j <= days[i]; j++ ) {
      if (j == <?php echo date('d') ?>)  days_select.options[days_select.options.length] = new Option(j, j, true);
      else days_select.options[days_select.options.length] = new Option(j, j);
     }
     break;
    }
   }
  }
 </script>
 <span style="display: table; ">
  <span style="display: table-cell; ">
   <select id="years" onchange="loadDays();">
    <?php 
     for($year = 1900; $year <= 2100; $year++ ) {
      if ($year == date('Y')) echo "<option value='$year' selected=''>" . $year . "</option>";
      else echo "<option value='$year'>" . $year . "</option>";
     }
    ?>
   </select>
  </span>
  &nbsp;
  <span style="display: table-cell; ">
   <select id="months" onchange="loadDays();">
    <?php 
     $months = array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" );
     foreach($months as $month){
      if ($month == date('M')) echo "<option value='$month' selected=''> " . $month . "</option>";
      else echo "<option value='$month'> " . $month . "</option>";
     }
    ?>
   </select>
  </span>
  &nbsp;
  <span style="display: table-cell; ">
   <select id="days" >
   </select>
  </span>
 </span>
</body>

我把这个作为一个单独的答案,因为它是一个。

Option()的第三个参数是该选项是否默认被选中,就像在HTML中指定一样。第四个问题是它现在是否真的被选中了。在你的Option()调用中添加另一个true,它在测试中对我有效。

new Option(j, j, true, true)

我认为这可能是因为<?php echo date('d') ?>产生带前导零的字符串"04"。您的j循环计数器是一个整数,永远不会匹配PHP输出的字符串。

尝试将其包装在Javascript的parseInt()函数中,或者使用date('j')来代替前导零。

if (j == parseInt(<?php echo date('d') ?>))

更好的是,使用Javascript自己的Date对象来获取当前日期。

var theDateObj = new Date();
var today = theDateObj.getDate(); // Will output int 4 for today.