使用Javascript的HTML下拉菜单

使用Javascript的HTML下拉菜单,javascript,html,loops,Javascript,Html,Loops,我正在尝试制作一个html下拉菜单,使用JavaScript,它使用一个循环插入从特定年份开始并在当前年份停止的选项。但是我失败了,下拉菜单出现了,但是里面没有任何东西 <script language="JavaScript" type="text/javascript"> function Year() { var Year = 1986 var CurrentYear = new Dat

我正在尝试制作一个html下拉菜单,使用JavaScript,它使用一个循环插入从特定年份开始并在当前年份停止的选项。但是我失败了,下拉菜单出现了,但是里面没有任何东西

  <script language="JavaScript" type="text/javascript">
         function Year()
         {
             var Year = 1986
             var CurrentYear = new Date().getFullYear()

             while( Year < CurrentYear){
             {
                 Year++;
                 document.write("<option>" + Year + "</option>");
             }

         }

功能年()
{
风险年=1986年
var CurrentYear=新日期().getFullYear()
而(年<当前年){
{
年份++;
文件。写(“+年+”);
}
}

这是HTML

  <select id='ddYear'>
      <option selected disabled hidden label="Select An Option">

   <script language="JavaScript" type="text/javascript">
           Year();
   </script>

   </select>

年份();

您可以在while循环中添加以下代码

Year++;
var select = document.getElementById("ddYear");
var option = document.createElement('option');
option.text = option.value = Year;
select.add(option, 0);

您有一个额外的卷发括号。我还建议您使用更好的命名:

     function buildOptions() {

         var year = 1986;
         var currentYear = new Date().getFullYear();

         while( year < currentYear) {
             year++;
             document.write("<option>" + year + "</option>");
         }

     }
函数buildOptions(){
var年=1986年;
var currentYear=新日期().getFullYear();
而(年<当前年){
年份++;
文件。写(“+年+”);
}
}
然后是HTML:

<select id='ddYear'>
   <option selected disabled hidden label="Select An Option">

   <script language="JavaScript" type="text/javascript">
         buildOptions();
   </script>

</select>

buildOptions();

考虑使用jQuery而不是纯javascript。这将使代码更易于阅读(即避免在
选择
代码中插入
脚本
元素,并允许您在运行时更新内容):

HTML

<select id='ddYear'>
    <option selected disabled hidden label="Select An Option"></option>
</select>

Jquery

var startYear = 1986;
var currentYear = (new Date).getFullYear();

for(var year=startYear; year<currentYear; year++)
{
  $('#ddYear').append($('<option/>', { 
     value: year,
     text : year 
  }));
}
var startYear=1986;
var currentYear=(新日期).getFullYear();

就(var year=startYear;year而言,依我拙见,您的方法可能会好一点

首先,可以避免在html中使用脚本标记来调用函数,因为这可以直接在脚本中完成

在这个工作中,通过使用HTML和javascript,我们生成从1986年到2015年的日期,在您以前的脚本中,您不包括这些日期

我还为您添加了一个更改事件侦听器以供将来使用,因为您可能想知道选择下拉列表将在何时更改

小提琴:


你能给我们看一下你的HTML标记吗?
标记必须被包装在
标记中,试着把它添加到你的代码中谢谢!我从来没有注意到这一点
<select id='ddYear'>
    <option selected disabled hidden label="Select An Option">
</select>
var ddYear = document.getElementById('ddYear');

var y = 1986;
var currYear = new Date().getFullYear();

while ( y <= currYear ) {
    var newOption = document.createElement('option');
    newOption.text = newOption.value = y;
    y++;
    ddYear.add(newOption);
}

ddYear.addEventListener('change',function() {
   alert(this.value);
});