我有一个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>
答案 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);