下拉列表中的选定值在下拉列表中显示两次

时间:2013-10-31 04:57:24

标签: javascript

我有一个javascript下拉列表显示所选值和其他值,但所选值在下拉列表中显示2次,它应该显示1次。请任何人帮我纠正问题。 如果2013年,2014.2015只有3个值,我选择2013年     但它显示了2013年选定的价值                      2013                      2013                      2014                      2015年

<script type="text/javascript">
function autoYear() {
  var time = new Date();
  var year = time.getYear();

  if (year < 1900) {
    year = year + 1900;
  }

  var date = year - 1; /*change the '25' to the number of years in the past you want to show */
  var future = year + 10; /*change the '10' to the number of years in the future you want to show */ 

  document.writeln ("<form><select id='year_<?php echo $row->id ?>'  name='year_<?php echo $row->id ?>'  ><option value=\"\"><?php echo $row->year; ?>");
  do {
    date++;
    document.write ("<option value=\"" +date+"\">" +date+ "");
  }
  while (date < future)
  document.write ("</select></form>");
}
</script>
<script type="text/javascript">
  autoYear();
</script>

2 个答案:

答案 0 :(得分:0)

您似乎没有关闭<option>代码。

另外,正如上面评论中所提到的,除了用document.write手动写出标签之外,还有更好的方法。当用这种方式手动写出HTML时,你更容易出错。

答案 1 :(得分:0)

你需要在你的循环中放置一个条件,让它知道它需要跳过所选的值,允许我在下面演示:

var date = year - 1; /*change the '25' to the number of years in the past you want to show */
var future = year + 10; /*change the '10' to the number of years in the future you want to show */ 

document.writeln ("<form><select id='year_<?php echo $row->id ?>'  name='year_<?php echo $row->id ?>'  ><option value=\"\"><?php echo $row->year; ?>");

do {
  date++;
  if (date != <?php echo $row->year; ?>) {
      document.write ("<option value=\"" +date+"\">" +date+ "");
  }
}
while (date < future);