<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   
<html xmlns="http://www.w3.org/1999/xhtml">  
<head>     
<title>js </title>      
<meta name="description" content="" />   
</head>
<script type="text/javascript">     var oYear = document.getElementById("sltYear");  //从循环中获取年份
var oWeek = document.getElementById("sltWeek");  //从循环中获取周数
var oDate = document.getElementById("spnDate"); //周数对应的周一的日期
var lDate = document.getElementById("lpnDate"); //周数对应的周五的日期
/*
*先获取当前年份,然后当年分小于2020年时,循环获取
*从2011年到2020年的一个数组
*/
for (var i=(new Date()).getFullYear(); 2000<= i <=2020; i++){   
oYear.add(new Option(i+"年", i));  
}  
/*
*循环获取从第一周到第52周的一个数组
*/
for (var i=1; i <=52; i++)  {   
oWeek.add(new Option(i+"周", i));  
}  
/*   
* sYear: string, 年份;   
* sWeek: string, 周数;   
* startFromFirstMonday: boolean, 是否从每年第一天开始计算周数,   
* true: 从每年第一天开始计算周数;false: 从每年第一个周一开始计算周数。   
*/  
function convertWeekNumberToFirstDate(sYear, sWeek, startFromFirstMonday)  {  
if (startFromFirstMonday == undefined) 
startFromFirstMonday = true;     
var weekIndex = 1;     
var year = parseInt(sYear);   
var week = parseInt(sWeek);     
var i = 1;   
var dFirstDate = new Date(year, 0, i);     
if (!startFromFirstMonday){    
   if (weekIndex  < week){     
weekIndex++;    
   }
   else{
return dFirstDate; 
   }    
   if (dFirstDate.getDay() != 1){    
i += 7 - dFirstDate.getDay() + 1;    
dFirstDate.setFullYear(year, 0, i);   
   }     
   if (weekIndex  < week){    
 i += 7*(week-weekIndex);    
 dFirstDate.setFullYear(year, 0, i);   
   }
   else{
 return dFirstDate;
   }  

}
function displayDate()  {   
var dFirstDate = convertWeekNumberToFirstDate(oYear.value, oWeek.value);   
oDate.innerHTML = dFirstDate.getFullYear()+"-"+(dFirstDate.getMonth()+1)+"-"+dFirstDate.getDate(); 
lDate.innerHTML = dFirstDate.getFullYear()+"-"+(dFirstDate.getMonth()+1)+"-"+(dFirstDate.getDate()+4); 
}    
displayDate();  
oYear.onchange = oWeek.onchange = displayDate;         
</script>    
<body>  
<select id="sltYear"> </select>     
<select id="sltWeek"> </select>     
<span id="spnDate"></span>—<span id="lpnDate"></span>
</body>   
</html> 

解决方案 »

  1.   

    for (var i=(new Date()).getFullYear(); 2000<= i <=2020; i++){   
        oYear.add(new Option(i+"年", i));  
    }  
    SCRIPT5007: 无法获取属性“add”的值: 对象为 null 或未定义 
    1.html, 行18 字符5
      

  2.   


    <script type="text/javascript" defer="defer">//defer:控件加载完成后执行
    /*   
    * sYear: string, 年份;   
    * sWeek: string, 周数;   
    * startFromFirstMonday: boolean, 是否从每年第一天开始计算周数,   
    * true: 从每年第一天开始计算周数;false: 从每年第一个周一开始计算周数。   
    */  
    function convertWeekNumberToFirstDate(sYear, sWeek, startFromFirstMonday)  {  
    ....
     if (!startFromFirstMonday){    
                
            } 
    //还有个出口,所以加个return
    return XXX;//如:return dFirstDate ;}</script>
      

  3.   

    是这意思么
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   
    <html xmlns="http://www.w3.org/1999/xhtml">  
    <head>     
    <title>js </title>
    <script type="text/javascript" src="jquery.min.js"></script>
    <meta name="description" content="" />   
    </head>
    <script type="text/javascript">    
        var oYear ,  oWeek, oDate, lDate ;
        
    $(function(){
    oYear = $("#sltYear");
    oWeek = $("#sltWeek");  
        oDate = $("#spnDate"); 
        lDate = $("#lpnDate");  for ( i=(new Date()).getFullYear(); (2000<= i )&&(i<=2020); i++){   
    $("<option/>").val(i).html(i+'年').appendTo(oYear);
    }   for (var i=1; i <=52; i++)  {   
    $("<option/>").val(i).html('第'+i+'周').appendTo(oWeek);
    }  
     displayDate();
     oYear.change(function(){displayDate();});
     oWeek.change(function(){displayDate();});
    });function convertWeekNumberToFirstDate(sYear, sWeek)  {  
         var  firstDayInYear = new Date(sYear, 0,  1);
     var d = new Date();
     d.setDate(firstDayInYear.getDate() + 7*(sWeek-1));
     return d;
    }
    function displayDate()  {
    var dFirstDate = convertWeekNumberToFirstDate(oYear.val(), oWeek.val());   
    oDate.html( dFirstDate.getFullYear()+"-"+(dFirstDate.getMonth()+1)+"-"+dFirstDate.getDate()); 
    lDate.html( dFirstDate.getFullYear()+"-"+(dFirstDate.getMonth()+1)+"-"+(dFirstDate.getDate()+4)); 
    }    
      
    </script>    
    <body>  
        <select id="sltYear"> </select>     
        <select id="sltWeek"> </select>     
        <span id="spnDate"></span>—<span id="lpnDate"></span>
    </body>   
    </html>